C でポインター パラメーターを渡すには、値による受け渡し、参照による受け渡し、およびアドレスによる受け渡しの 3 つの方法があります。値によって渡すと、元のポインターに影響を与えずにポインターがコピーされます。参照によって渡すと、関数は元のポインターを変更できます。また、アドレスによって渡すと、関数はポインターが指す値を変更できます。ニーズに応じて適切なパラメータ送信方法を選択してください。
#C 関数パラメータの詳細説明: 異なるポインタ型のパラメータ受け渡し方法の比較
関数パラメータ受け渡しは重要なメソッドですC では、関数呼び出しで値またはアドレスを渡すことを可能にする重要なプログラミング概念。ポインタ型の場合、C にはパラメータを渡すためのいくつかの異なる方法が用意されています。この記事では、実際のケースを通じてこれらの方法を詳しく比較します。1. ポインター値の受け渡し
ポインター値を渡すための構文はvoid foo(int* ptr); で、ポインターを効果的に転送します。 value to コピーが関数に渡されます。関数内でコピーを変更しても、元のポインターには影響しません。
#include <iostream> void foo(int* ptr) { std::cout << *ptr << std::endl; // 输出:5 *ptr = 10; // 仅修改函数内的副本 } int main() { int num = 5; foo(&num); // 传递指针值 std::cout << num << std::endl; // 输出:5,原始指针未修改 return 0; }
2. 参照によるポインター
ポインター参照を渡すための構文はvoid foo(int*& ptr); です。関数に渡されます。関数内の参照を変更すると、元のポインターに影響します。
#include <iostream> void foo(int*& ptr) { std::cout << *ptr << std::endl; // 输出:5 *ptr = 10; // 修改原始指针 } int main() { int num = 5; foo(&num); // 传递指针引用 std::cout << num << std::endl; // 输出:10,原始指针已修改 return 0; }
3. アドレスへのポインター
ポインター アドレスを渡すための構文はvoid foo(int** ptr); です。アドレスが関数に渡されます。関数内でアクセスできるのはポインターのみであり、ポインターが指す値に直接アクセスすることはできません。
#include <iostream> void foo(int** ptr) { std::cout << *(*ptr) << std::endl; // 输出:5 *(*ptr) = 10; // 修改指针指向的值 *ptr = nullptr; // 指向另一个值 } int main() { int num = 5; foo(&num); // 传递指针地址 std::cout << num << std::endl; // 输出:10,指针指向的值已修改 std::cout << *foo(&num) << std::endl; // 输出:0,指针指向另一个值 return 0; }
概要
ポインターから値へのコピー ポインターは、元のポインターには影響しません。参照によるポインターでは関数が元のポインターを変更できるのに対し、アドレスによるポインターでは関数がポインターが指す値を変更できます。特定のニーズに応じて、適切なパラメータ送信方法を選択することが重要です。以上がC++関数のパラメータの詳細解説:ポインタ型別のパラメータの受け渡し方法の比較の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。