传值和传地址调用

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 }
原文地址:https://www.cnblogs.com/jfl-xx/p/4868565.html