C语言,不明白为什么第三个答案是6 ?

不明白为什么输出6,一开始我认为第三个答案应该输出4,因为sp函数里的*a输出是4,但是看了下没有4这个选项,后来想了下,4输出后sp(&k)没有赋值,应该是3,结果是6... 不明白为什么输出6,一开始我认为第三个答案应该输出4,因为sp函数里的*a输出是4,但是看了下没有4这个选项,后来想了下,4输出后sp(&k)没有赋值,应该是3,结果是6,怎么来的? 展开
 我来答
杨萧Leys
2020-07-03 · TA获得超过134个赞
知道小有建树答主
回答量:231
采纳率:86%
帮助的人:27.5万
展开全部

程序将k的地址传给指针a,前半部分操作*a实际就是操作k的值,那么*a = *a * 2的结果就传递到k的值上,k=6。


后半部分a指向变量b的地址,此时操作*a实际就是操作b的值,与k无关。

做个标记看看就很简单了

就相当于两个变量k和b,开始a指向了k,后来a指向了b而已,并不是将b的值赋给k,更不是改变k的地址,变量的地址是不能被修改的。

把sp函数的参数int *a)换成是(int* a),应该更容易理解。形参和实参分清楚。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式