C++ 函数参数
指针调用
向函数传递参数的指针调用方法,把参数的地址复制给形式参数。在函数内,该地址用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。
#include <iostream> using namespace std; void swap(int *a, int *b) { int temp = *a; *a = *b; *b = temp; } int main() { int a = 10; int b= 20; //交换前 cout<<"a="<<a<<" "<<"b="<<b<<endl; swap(&a,&b); //交换后 cout<<"a="<<a<<" "<<"b="<<b<<endl; return 0; }
运行结果
引用调用
该方法把参数的引用复制给形式参数。在函数内,该引用用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。
#include <iostream> using namespace std; void swap(int &a, int &b) { int temp = a; a = b; b = temp; } int main() { int a = 10; int b= 20; //交换前 cout<<"a="<<a<<", "<<"b="<<b<<endl; swap(a,b); //交换后 cout<<"a="<<a<<", "<<"b="<<b<<endl; return 0; }
运行结果:
值传递调用
该方法是把实参复制给形参,在这种情况下,修改函数内的形参是不会影响实际参数的。
#include <iostream> using namespace std; void swap(int a, int b) { int temp = a; a = b; b = temp; } int main() { int a = 10; int b= 20; //交换前 cout<<"a="<<a<<", "<<"b="<<b<<endl; swap(a,b); //交换后 cout<<"a="<<a<<", "<<"b="<<b<<endl; return 0; }
运行结果: