函数的值传递和地址传递的差别(C语言)
值传递和地址传递的差别
1.值传递
代码部分
#include
int swap(int x, int y); //函数声明
int main()
{
int a, b;
printf("请输入数字 a,b:");
scanf("%d,%d", &a, &b);
swap(a, b); //函数调用
printf("交换后数字 a=%d,b=%d\n", a, b);
return 0;
}
int swap(int x, int y) //函数定义
{
int temp;
temp = x;
x = y;
y = temp;
return 0;
}
验证部分
2.地址传递
代码部分
#include
int swap(int *x, int *y); //函数声明
int main()
{
int a, b;
printf("请输入数字 a,b:");
scanf("%d,%d", &a, &b);
swap(&a, &b); //函数调用
printf("交换后数字 a=%d,b=%d\n", a, b);
return 0;
}
int swap(int *x, int *y) //函数定义
{
int temp;
temp = *x;
*x = *y;
*y = temp;
return 0;
}
验证部分
3.结论
实参:函数调用时传入的参数,例如:swap(&a, &b);中的参数a,b
形参:函数定义时的参数,例如:int swap(int *x, int *y);中的参数x,y
函数的值传递不能改变传入的实参,而地址传递可以改变传入的实参
转载请注明出处