这是因为你传给swap的参数只是一个数,这是传值调用,并不能影响实参,只是实参的一份零时拷贝
可以修改为传址调用:
#include <stdio.h>
void swap2(int* a, int* b)
{
int tmp = *a;//定义一个临时变量,备份a的值
*a = *b;//将b的值赋给a
*b = tmp;//将备份的a的值赋给b,完成交换
}
int main()
{
int a = 2, b = 3;
printf("交换前:a=%d,b=%d\n",a,b);
swap2(&a, &b);//调用自己创建的交换函数
printf("交换后:a=%d,b=%d\n",a,b);
return 0;
}
我的博客有详解,可以参考一下,希望对你有帮助.
https://blog.csdn.net/qq_67276605/article/details/127676952