C语言的传值与传址调用

时间:2021-05-17 07:34:56

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

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

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

请看代码:

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

 #include <stdio.h>

 void swap_value(int x,int y)
{
int temp;
temp = x;
x = y;
y = temp;
printf("传值函数内的输出 %d %d \n",x,y);
} void swap_address(int *x,int *y)
{
int temp;
temp = *x;
*x = *y;
*y=temp;
printf("传址函数内的输出 %d %d \n",*x,*y);
} int main(int argc, char *argv[])
{
int x = ;
int y = ; printf("x y \n");
printf("初值 %d %d \n",x,y);
//传值子程序调用(交换xy)
swap_value(x,y);
printf("传值函数外调用 %d %d \n",x,y); //传地址字程序调用(交换x,y)
swap_address(&x,&y);
printf("传址函数外调用 %d %d \n",x,y);
return ;
}