C语言。麻烦解释下这个程序,完全看不懂,谢谢

 我来答
b_spike
2016-03-08 · TA获得超过3686个赞
知道大有可为答主
回答量:3724
采纳率:78%
帮助的人:1158万
展开全部
那个应该非常容易懂
data是一个结构体S类型的数组,数组长度为2,两个元素成员值分别为{a=10,b=100}和{a=20,b=200}
data[1]是第二个元素,将这个元素整个赋给结构体S类型变量p,那么p也就变成了{a=20,b=200},p.a的值是20,后面有自增运算,因此输出21
更多追问追答
追问
为啥data[2]里面的值会被拆分成a和b呢
追答
因为S类型里面是2个int类型成员,在内存中按顺序存放,赋值取值的时候就是以两个int的内存空间为一个存储长度,只有访问S类型的内部的成员a和b时才是1个int类型
具体看看结构体的赋值以及在内存中的存储结构
一口没水的枯井
2016-03-08 · TA获得超过2989个赞
知道小有建树答主
回答量:473
采纳率:100%
帮助的人:146万
展开全部
首先答案的确是选D
1 data是个 (struct S)类型的数组, data[0]是{10,100}, data[1]是{20,200} (这是结构的定义和赋值的知识)
2 将data[1]赋给了p,于是p.a就是20
3 关于符号++, 其在前是先加后返回值,其在后反之, 所以p.a先执行 p.a=p.a+1, 再返回p.a, 即21
追问
为啥data[2]里面的值会被拆分成a和b呢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
风暴咆哮
2016-03-08 · TA获得超过1万个赞
知道大有可为答主
回答量:2万
采纳率:34%
帮助的人:3234万
展开全部
这个P哪里来的?应该是S吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式