求解整个C程序是如何执行的,望详细解答,谢谢

 我来答
表西华景铭
2020-04-19 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:30%
帮助的人:838万
展开全部
整个程序难点主要是指针那个地方的赋值,具体执行是这样的。
1.
首先先执行printf("in
main,
before
f
and
g\n");输出in
main,
before
f
and
g,很简单。
2.
a
=
f(a,
b);函数执行也不用说最后return
为1+2+2的5,所以a=5;
3.
接下执行b
=
g(&b,
&c);函数,需注意g函数传入的是两个指针变量,&是取址符,讲b,c的地址传入g函数中。接下执行v
=
*p
+
*q;先前讲a,b地址传入了p,q指针。*是取值符,代表了取出p,q指针所指地址的数值。所以v
=5。接下来输出printf("in
g,
before
f\n");
4.
执行*q
=
f(v,
*p);。同理这句话表示将q所指地址的数值改变后面f函数返回值。f函数这里就相当于f(5,2),接下来输出printf("in
f\n");,所以最后return
的值为17,即q所指的地址(c)的值改变为17。
5.
输出printf("in
g,
after
f\n");
6.
最后返回值5-17=-12;即b=-12;最后输出printf("in
main,
after
f
and
g\n");
7.
printf("a
=
%d,
b
=
%d,
c
=
%d\n",
a,
b,
c);a=5,b=-12,c=17;
8.
结束!
有什么不懂得直接追问,望采纳!谢谢!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式