C语言的传值与传址调用

传值调用并不能改变两个变量的值,而传址能。

为什么,因为,传值调用,仅仅是在函数内,调换参数的值。

而地址所指向的值,改变的不仅仅是函数内,函数外也改变。

请看代码:

 

 1  #include  < stdio.h >
 2  #include  < stdlib.h >
 3 
 4  void  swap1( int  x, int  y)
 5  {
 6     int  temp;
 7    
 8    temp = x;
 9    x = y;
10    y = temp;   
11    printf( " 传值函数内的输出 %d %d \n " ,x,y);
12  }
13 
14  void  swap2( int   * x, int   * y)
15  {
16     int  temp;
17    temp  =   * x;
18     * =   * y;
19     * y = temp;   
20    printf( " 传址函数内的输出 %d %d \n " , * x, * y);
21  }
22 
23  int  main( int  argc,  char   * argv[])
24  {
25     int  x  =   10 ;
26     int  y  =   0 ;
27    
28    printf( " x y \n " );
29    printf( " 初值 %d %d \n " ,x,y);
30     // 传值子程序调用(交换xy) 
31    swap1(x,y);
32    printf( " 传值函数外调用 %d %d \n " ,x,y);
33    
34     // 传地址字程序调用(交换x,y) 
35    swap2( & x, & y);
36    printf( " 传址函数外调用 %d %d \n " ,x,y);
37    system( " PAUSE " );    
38     return   0 ;
39  }
40 

 

 

你可能感兴趣的:(C语言)