c语言计算问题求解

voidsp(int*a){intb=2;*a=*a*2;a=&b;*a=*a*2}main(){intk=3;sp(&k);printfk“%d\n”,k}求详细步骤... void sp(int *a)
{ int b=2;
*a=*a*2;
a=&b;*a=*a*2
}
main()
{int k=3;
sp(&k);
printfk“%d\n”,k
}求详细步骤
展开
 我来答
自我编程
2019-03-26 · 科技优质答主
自我编程
采纳数:1481 获赞数:4283

向TA提问 私信TA
展开全部

这题,结果是6,考的是函数传址。

sp函数参数int *a是一个地址。

所以sp(&k),这里把变量k的地址传递到函数sp中,保存在sp指针a中。

所以sp对k地址操作,就会改变k的值。

所以*a=*a*2;就相当于k=k*2;(因为此时a指针指向的是k的地址,*a就是k的值)。

而之后a=&b; 之后的代码都不用看了,因为这里a指针指向了b的地址,已经和k没关系了。

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

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式