C语言题目求大佬详解

如题所述

#include <stdio.h>int *swap(int *a, int *b) { int *temp = a;
a = b;
b = temp; return a;
}int main() { int x = 3, y = 4, z = 5;
swap(swap(&x, &y), &z); printf("%d, %d, %d\n", x, y, z); return 0;
}

根据修正后的代码,回答问题如下:
(1) 第1次调用swap()函数后,实参x的值为 3。
在第一次调用swap()函数时,传入的实参是&x和&y,即变量x和y的地址。在swap()函数内部,通过交换指针指向的值,将x和y的值进行了交换。因此,第一次调用swap()函数结束后,实参x的值仍然为3。
(2) 程序的输出结果为 "4, 3, 5"。
在main()函数中,首先调用swap(&x, &y),实参x和y的值交换,变为4和3。然后,再将交换后的结果与实参z进行交换,即swap(swap(&x, &y), &z)。最终,输出的结果为"4, 3, 5"。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2023-03-24
swap函数是对指针的操作,对实参没有影响,调用几次x,y,z都不会变
相似回答