C++ ポインタ呼び出し
関数に引数を渡すポインタ呼び出し方法。パラメータのアドレスを仮引数にコピーします。関数内では、このアドレスは呼び出しで使用される実引数にアクセスするために使われます。つまり、仮引数を変更すると実引数に影響します。
ポインタによる値渡しでは、パラメータポインタが他の値と同様に関数に渡されます。したがって、次の関数ではswap()関数のパラメータをポインタ型として宣言する必要があります。この関数は、パラメータが指す2つの整数変数の値を交換するために使用されます。
// 函数定义
void swap(int *x, int *y)
{
int temp;
temp = *x; /* 保存地址 x 的值 */
*x = *y; /* 把 y 赋值给 x */
*y = temp; /* 把 x 赋值给 y */
return;
}
C++ のポインタの詳細については、次を参照してください。C++ ポインタの章。
では、ポインタを使って値渡しで関数を呼び出してみましょう。swap():
#include <iostream>
using namespace std;
// 函数声明
void swap(int *x, int *y);
int main ()
{
// 局部变量声明
int a = 100;
int b = 200;
cout << "交换前,a 的值:" << a << endl;
cout << "交换前,b 的值:" << b << endl;
/* 调用函数来交换值
* &a 表示指向 a 的指针,即变量 a 的地址
* &b 表示指向 b 的指针,即变量 b 的地址
*/
swap(&a, &b);
cout << "交换后,a 的值:" << a << endl;
cout << "交换后,b 的值:" << b << endl;
return 0;
}
上記のコードをコンパイルして実行すると、次の結果が生成されます。
交换前,a 的值: 100 交换前,b 的值: 200 交换后,a 的值: 200 交换后,b 的值: 100その他の拡張
C++ 関数