ホームページ >バックエンド開発 >C++ >C/C++ のパラメータ受け渡しテクノロジ

C/C++ のパラメータ受け渡しテクノロジ

WBOY
WBOY転載
2023-08-31 13:41:06819ブラウズ

C/C++ のパラメータ受け渡しテクノロジ

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 サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。