计算机二级c语言实参形参一道题,跪求大神解答

有以下程序:#include<stdio.h>typedefstruct{intb,p;}A;voidf(Ac)/*注意:c是结构变量名*/{intj;c.b+=1;c.... 有以下程序:
# include <stdio.h>
typedef struct { int b, p; } A;
void f(A c) /* 注意:c是结构变量名 */
{ int j;
 c.b += 1; c.p+=2;
}
main()
{ int i;
 A a={1,2};
 f(a);
 printf("%d,%d\n", a.b, a.p);
}
程序运行后的输出结果是(  )。
A) 2,4
B) 1,2
C) 1,4
D) 2,3
答案是B,求大神仔细分析一下这道题的解答过程,实在是看不懂,谢谢
展开
 我来答
zhoukzhouxc
2014-09-16
知道答主
回答量:2
采纳率:0%
帮助的人:3.1万
展开全部
这个函数是void型,在本题中实参传递给形参后,形参改变后的值无法传递回去,这一点回去翻下书,如果要改变值得话需要通过指针,所以对于结构体a来说,它里面的值依旧没有改变,所以答案选B
追问
明白点儿了,那你能讲一下形参怎么通过指针传递给实参的呢?就是什么格式,谢谢!
kaixingui2012
2014-09-16 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6288万
展开全部
void f(A c) /* 注意:c结构体变量名 所以,这里如果不传指针,此时的c就是main中的a变量的一个副本,改变副本的值与原a无关!! */

所以程序输出还是原来的a中的值 1,2
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式