C语言。麻烦解释下这个程序,完全看不懂,谢谢
3个回答
展开全部
那个应该非常容易懂
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是一个结构体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类型
具体看看结构体的赋值以及在内存中的存储结构
展开全部
首先答案的确是选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
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呢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个P哪里来的?应该是S吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询