您的位置:首页 > 编程语言 > C语言/C++

C语言的传值与传址调用

2016-03-11 00:00 423 查看
传值调用并不能改变两个变量的值,而传址能。

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

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

请看代码:

这里还要注意:通常我们不会返回局部变量的地址.

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 }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: