C では、2 つの異なる方法でパラメータを渡すことができます。これらは値による呼び出しとアドレスによる呼び出しであり、C では別の手法を使用できます。これを参照による呼び出しと呼びます。それらの効果と仕組みを見てみましょう。
最初に、値による呼び出しを見ていきます。この手法では、パラメータが関数パラメータにコピーされます。したがって、何らかの変更が加えられた場合、実際の値ではなく、コピーされた値が更新されます。
#include <iostream> using namespace std; void my_swap(int x, int y) { int temp; temp = x; x = y; y = temp; } int main() { int a, b; a = 10; b = 40; cout << "(a,b) = (" << a << ", " << b << ")\n"; my_swap(a, b); cout << "(a,b) = (" << a << ", " << b << ")\n"; }
(a,b) = (10, 40) (a,b) = (10, 40)
アドレスによる呼び出しは、変数のアドレスを関数に渡すことによって機能します。したがって、関数がそのアドレスが指す値を更新すると、実際の値も自動的に更新されます。
#include <iostream> using namespace std; void my_swap(int *x, int *y) { int temp; temp = *x; *x = *y; *y = temp; } int main() { int a, b; a = 10; b = 40; cout << "(a,b) = (" << a << ", " << b << ")\n"; my_swap(&a, &b); cout << "(a,b) = (" << a << ", " << b << ")\n"; }
(a,b) = (10, 40) (a,b) = (40, 10)
アドレス呼び出しと同じですが、ここでは参照呼び出しを使用します。これは C 固有の機能です。パラメータの参照変数を渡す必要があるため、それを更新するには実際の値が更新されます。関数定義の場合のみ、変数名の前に & を付ける必要があります。
#include <iostream> using namespace std; void my_swap(int &x, int &y) { int temp; temp = x; x = y; y = temp; } int main() { int a, b; a = 10; b = 40; cout << "(a,b) = (" << a << ", " << b << ")\n"; my_swap(a, b); cout << "(a,b) = (" << a << ", " << b << ")\n"; }
(a,b) = (10, 40) (a,b) = (40, 10)
以上がC/C++ のパラメータ受け渡しテクノロジの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。