C++函数按指针调用
通过传递函数参数拷贝参数的地址到形式参数的指针方法的调用。函数的内部的地址是用来访问调用中使用的实际参数。这意味着,对参数的更改会影响传递的参数。
传递指针的值,参数指针传递给函数就像任何其他的值。所以,相应的需要声明函数的参数为指针类型,如在以下函数swap(),从而改变了两个整型变量的值指向它的参数。
// function definition to swap the values. void swap(int *x, int *y) { int temp; temp = *x; /* save the value at address x */ *x = *y; /* put y into x */ *y = temp; /* put x into y */ return; }
要了解更详细的关于C++指针,请检查C++指针的篇章。
现在,让我们调用函数swap()通过指针,如下面的例子传递值:
#include <iostream> using namespace std; // function declaration void swap(int *x, int *y); int main () { // local variable declaration: int a = 100; int b = 200; cout << "Before swap, value of a :" << a << endl; cout << "Before swap, value of b :" << b << endl; /* calling a function to swap the values. * &a indicates yiibaier to a ie. address of variable a and * &b indicates yiibaier to b ie. address of variable b. */ swap(&a, &b); cout << "After swap, value of a :" << a << endl; cout << "After swap, value of b :" << b << endl; return 0; }
当上述代码放在同一个文件中,编译和执行时,它产生了以下结果:
Before swap, value of a :100 Before swap, value of b :200 After swap, value of a :200 After swap, value of b :100
C++函数引用调用
通过传递函数参数拷贝参数的参考成形式参数的参考方法调用。函数内部的参考用于访问在调用中使用的实际参数。这意味着,对参数的更改会影响传递的参数。
要通过引用传递的价值,参数引用传递给函数就像任何其他的值。所以,相应的,需要声明函数的参数为引用类型如下面的函数swap(),它的交换两个整型变量的值指向它的参数。
// function definition to swap the values. void swap(int &x, int &y) { int temp; temp = x; /* save the value at address x */ x = y; /* put y into x */ y = temp; /* put x into y */ return; }
现在,让我们调用函数swap()通过引用作为在下面的示例中传递值:
#include <iostream> using namespace std; // function declaration void swap(int &x, int &y); int main () { // local variable declaration: int a = 100; int b = 200; cout << "Before swap, value of a :" << a << endl; cout << "Before swap, value of b :" << b << endl; /* calling a function to swap the values using variable reference.*/ swap(a, b); cout << "After swap, value of a :" << a << endl; cout << "After swap, value of b :" << b << endl; return 0; }
当上述代码放在同一个文件中,编译和执行时,它产生了以下结果:
Before swap, value of a :100 Before swap, value of b :200 After swap, value of a :200 After swap, value of b :100