C++ 函数指针调用
将参数传递给函数的指针调用方法会将参数的地址复制到形参中。在函数内部,该地址用于访问调用中使用的实际参数。这意味着对形参的更改会影响传递的参数。
要通过指针传递值,参数指针会像任何其他值一样传递给函数。因此,您需要将函数参数声明为指针类型,如以下函数swap()所示,该函数交换其参数指向的两个整型变量的值。
// 函数定义用于交换值。 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