C语言问题,为什么有了swap语句结果依旧为3,8?

2025-04-14 09:56:14
推荐回答(1个)
回答1:

因为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;
}