交换两个实型变量写函数如下后运行并未交换
#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;
}
文章讲述了在C语言中,如何通过使用指针实现交换两个实型变量的值。原代码中的变量作为形参时,不会改变实参的值,需使用指针指向变量地址进行修改。作者强调了实参和形参的区别以及指针在传递变量值中的关键作用。





