交换两个实型变量写函数如下后运行并未交换
#include <stdio.h>
void exc(int x, int y)
{
int z = 0;
z = x;
x = y;
y = z;
}
int main()
{
int a = 10;
int b = 90;
exc(a, b);
printf("%d %d", a, b);
return 0;
}
在调试过程中看到
a b和x y的地址并不相同
解释:
main函数里的变量为实参,自定义函数里的变量叫形参,实参的值传给形参后,在函数里运行并不会对实参的值产生实际性的影响。所以要直接修改地址上的值。
即
void exc(int *px, int *py)
{
int z = 0;
z = *px;
*px = *py;
*py = z;
}
int main()
{
int a = 10;
int b = 90;
exc(&a, &b);
printf("%d %d", a, b);
return 0;
}