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 

 

 

posted @ 2010-07-29 17:16  草珊瑚  阅读(595)  评论(0编辑  收藏  举报