1.原理
传值调用:
传值调用指方法在调用参数时,不是对原参数进行操作,而是创建参数的拷贝并对进行操作
指针调用:
它是传值调用的一种特殊方式,将实参的地址传递给指针形参 ,此时实参和行参都指向同一个对象
引用调用:
以地址的方式传递参数,形参和实参都是同一个对象,形参相当于实参的别名
2.实例
1 #include<iostream> 2 using namespace std; 3 4 //传值调用 5 void exchange1(int x, int y){ 6 int temp = x; 7 x = y; 8 y = temp; 9 printf("x=%d,y=%d ", x, y); 10 } 11 12 //指针调用 13 14 void exchange2(int *x, int *y){ 15 int temp = *x; 16 *x = *y; 17 *y = temp; 18 printf("x=%d,y=%d ", *x, *y); 19 } 20 21 //引用调用 22 void exchange3(int &x, int &y){ 23 int temp = x; 24 x = y; 25 y = temp; 26 printf("x=%d,y=%d ", x, y); 27 } 28 void main(){ 29 int a = 3; 30 int b = 4; 31 exchange1(a, b); //此时有前缀操作x=a,y=b,此时x=3,y=4,对a和b本身不操作 32 printf("a=%d,b=%d ", a, b); //a=3,b=4, x=4,y=3 33 34 exchange2(&a, &b); //此时有前缀操作x=&a,y=&b,此时x,y指向a,b的地址,即对a,b本身操作 35 printf("a=%d,b=%d ", a, b); // a=4,b=3, x=4,y=3 exchange3(a, b); 36 37 exchange3(a, b); //此时有前缀操作x=&a,y=&b,此时x,y指向a,b的地址,即对a,b本身操作 38 printf("a=%d,b=%d ", a, b); //a=4,b=3, x=4,y=3 39 }