a b的值无法交换
函数都是局部变量,存储在栈区 主函数main也是局部变量
以32位系统为例,运行内存为4G,划分如下:
a b 交换内部原理图:
a b交换代码实现(无法交换)
void swap(int a, int b) { //形参对实参进行值拷贝
int temp;
temp = a;
a = b;
b = temp;
}
int main() {
int a = 10, b = 20;
swap(a, b); //分号结束,函数调用完毕,该函数内存被系统回收
printf("a = %d,b = %d", a, b); //输出结果:a = 10, b = 20
return 0;
}
如何正确交换a b的值
#include<stdio.h>
void swap(int* p1, int* p2) {
int temp = *p1;
*p1 = *p2;
*p2 = temp;
}
int main() {
int a = 10, b = 20;
printf("交换之前:a=%d ,b=%d\n", a, b);
swap(&a, &b);
printf("交换之后:a=%d ,b=%d\n", a, b);
return 0;
}