交换整型变量的内容,也就是交换两个变量的值,这里需要用到自定义函数
很多初学者会犯的错误:
#includevoid Swap1(int x, int y) { int temp = 0;//创建临时变量充当桥梁用来交换整形变量的值 temp = x; x = y; y = temp; } int main() { int a = 10, b = 20; printf("a = %d b = %dn", a, b); Swap1(a, b); printf("a = %d b = %dn", a, b); return 0; }
这段代码运行结果:
a = 10 b = 20
a = 10 b = 20
并没有将两个整形变量的内容交换。这是为什么呢,用调试的方法看发现 a、b的地址与x,y不同,形参实际上是实参的一份临时拷贝,对形参的更改不会影响实参的变化,因此根本没法更改。所以要用到指针变量
#includevoid Swap2(int* pa, int* pb) { int temp = 0;//创建临时变量充当桥梁用来交换整形变量的值 temp = *pa; *pa = *pb; *pb = temp; } int main() { int a = 10, b = 20; int* pa = &a; int* pb = &b; printf("a = %d b = %dn", a, b); Swap2(pa, pb); printf("a = %d b = %dn", a, b); return 0; }
结果如下:
a = 10 b = 20 a = 20 b = 10 D:Project1x64DebugProject1.exe (进程 3172)已退出,代码为 0。 按任意键关闭此窗口. . .



