因为main函数调用swap传进去的参数,在进入swap函数后会在堆栈内进行备份(值类型都是),所以,你交换的只是swap函数内的,也就是堆栈上的a和b的值,而main函数内的a和b并未发生变化,正确的代码应该是:
#include
void swap(int *a, int *b)
{
int t = *a;
*a = *b;
*b = t;
}
int main(void)
{
int a = 3, b = 8;
swap(&a, &b);
printf("%d, %d",a,b);
return 0;
}