中易网

请教c语言的一个问题

答案:2  悬赏:80  
解决时间 2021-04-21 10:41

#include "stdio.h"

void fun(int *a,int *b)

{

int *k;

k=a;a=b;b=k;

}

main()

{

int a=3,b=6,*x=&a,*y=&b;

fun(x,y);

printf("%d %d",a,b);

}

这个输出结果是3,6

我个人认为是 6,3 但是我知道我错了

可是我不明白

函数fun()里面应该是把这两个数交换了啊 难道他们没有交换 如果没有交换 是为什么啊

请高手指教

最佳答案
注意 int *a 和 int a是不同的。

函数里是接收到了两个参数,这两个参数分别为main中a和b变量的地址。这两个地址是保存在堆栈中的。
当执行

int *k;

k=a;a=b;b=k;

后,堆栈中对应那两个参数的位置上的值交换了,但这个改变仅仅局限在堆栈内,当fun执行完毕后,堆栈内的那两个参数被丢弃,最终main中的变量a和b并没有任何改变。


全部回答

int k;

k=*a;*a=*b;*b=k;

看看区别,我们是利用形参a b得到他们指向的值,不是修改它们本身

我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我家的DNF打不开
天津市静海县梁头镇西柳木村邮编是什么?
静逸轩休闲宾馆地址在什么地方,我要处理点事
小米官网为什么没有小米手机2原装电池
谁在网上买过伯莱雅的化妆品?是不是网上都是
江阴万达开业,靖江到江阴的公交车要坐到哪一
李强口腔诊所怎么去啊,有知道地址的么
重庆市北碚区澄江镇松林坡邮编是什么?
建设银行汇款至美国银行
北京净雅大酒店背景音乐
中山到荔浦修仁有多远
朝阳区嘉年华粥店
湖南凤凰古城离张家界有多远?怎么坐车,求路
求近期好玩游戏激活码,多谢~
最新娃娃谁有
推荐资讯
思维的本质是什么?还有自然界的本质?
你会放下爱,去寻找自己的事业吗 ?
“她让我有一种初恋的感觉”,男生为什么会这
广东韶关市特产是什么?
忘不了的眼神作文 快
创造性思维有哪些个性品质
什么才叫真正的爱。怎样才能获得
博兴海利家纺怎么去啊,有知道地址的么
老班长大锅台(五里路店)地址在哪,我要去那里
4.5×9.8(简便方法计算)
关于经济纠纷的法律案件
安新京新风景园在安新镇的范围内吗
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?