传值调用并不能改变两个变量的值,而传址能。
为什么,因为,传值调用,仅仅是在函数内,调换参数的值。
而地址所指向的值,改变的不仅仅是函数内,函数外也改变。
请看代码:
这里还要注意:通常我们不会返回局部变量的地址.
1 #include <stdio.h>
2
3 void swap_value(int x,int y)
4 {
5 int temp;
6 temp = x;
7 x = y;
8 y = temp;
9 printf("传值函数内的输出 %d %d \n",x,y);
10 }
11
12 void swap_address(int *x,int *y)
13 {
14 int temp;
15 temp = *x;
16 *x = *y;
17 *y=temp;
18 printf("传址函数内的输出 %d %d \n",*x,*y);
19 }
20
21 int main(int argc, char *argv[])
22 {
23 int x = 10;
24 int y = 0;
25
26 printf("x y \n");
27 printf("初值 %d %d \n",x,y);
28 //传值子程序调用(交换xy)
29 swap_value(x,y);
30 printf("传值函数外调用 %d %d \n",x,y);
31
32 //传地址字程序调用(交换x,y)
33 swap_address(&x,&y);
34 printf("传址函数外调用 %d %d \n",x,y);
35 return 0;
36 }
原文:http://www.cnblogs.com/LiLihongqiang/p/5877896.html