c语言函数调用基础题

以下程序的输出是什么?


void swap(int a, int b);
int main()
{
    int a = 5;
    int b = 6;
    swap(a,b);
    printf("%d-%d\n", a, b);
    return 0;
}
void swap(int a, int b)
{
    int t = a;
    a = b;
    b = t;
}

正确答案应当是5-6
楼主不明白为何调用swap函数后ab的值仍没有发生改变?

因为你void swap(int a, int b) 定义时少了引用 & ,所以相当于只是对a,b的副本进行交换,这不会影响到a,b本身

该回答引用ChatGPT

因为 swap 函数中 a 和 b 的值在 main 函数和 swap 函数中是不同的两个变量,所以将 a 和 b 的值交换在 swap 函数中是不会影响到 main 函数中 a 和 b 的值的。