问一道C语言的题

来源:百度知道 编辑:UC知道 时间:2024/04/30 03:14:09
下面程序的运行结果是:
void swap(int *a,int *b)
{ int *t;
t=a; a=b; b=t;
}
main()
{ int x=3,y=5,*p=&x,*q=&y;
swap(p,q);
printf("%d%d\n",*p,*q);
}

补充:不要让我自己去运行哦,我想知道为什么,谢谢!
什么引用的副本?看不懂诶,能再详细点吗?
到底是35还是53啊?
不要只给我个答案好伐?为什么可以解释一下伐?
同志们不要只和我讲答案好吗?我需要解释!!!

首先swap()函数的作用是交换两个参数。
mian函数中定义x,y,然后让指针p,q分别指向x,y的地址。
经过swap(p,q);之后是将q,p分别指向x,y的地址,所以输出的时候*p,*q会输出5和3!
希望你明白。

3 5
swap 方法里面看上去象把两个变量互换了,但是参数传的是引用的副本,并没有改变原来的指针引用地址

结果是 35

35