C语言中一道关于结构体指针的问题,求详细的分析

下列程序段运行后,表达式()的值为3.structpoint{intx;inty;}*pstructpointa[3]={1,2,3,4,5,6};p=a;A,p[1].... 下列程序段运行后,表达式()的值为3.
struct point
{
int x;
int y;
} *p
struct point a[3]={1,2,3,4,5,6};
p=a;

A,p[1].x B. *(p+2) C. p[2].x D p[3].x
展开
 我来答
折心灬小轩
2013-06-09 · TA获得超过543个赞
知道小有建树答主
回答量:259
采纳率:0%
帮助的人:118万
展开全部
答案是A
将数组a自动按结构体分开,可以知道1和2是一个结构体变量;3和4是一个结构体变量;5和6是一个结构体变量;
p=a;的意思是 让结构体指针指向结构体数组的首个元素
那么由此可以p[0]是第一个结构体变量;p[1]是第二个结构体变量;p[2]是第三个结构体变量;
由分类可知,3是第二个结构体变量的成员x,所以正确的引用是 p[1].x
如果不明白可以追问,希望我的答案可以帮助到你
追问
不好意思哦,想问下将数组a 自动按结构体分开?这是怎么分啊?不太懂。x,y 都是成员啊怎么看第几个引用那个?
追答
我说的将它分开实际上就是这么一回事:
由于数组是顺序存储的,结构体的成员也是顺序存储的,所以一个连续的数组可以分成几个小的结构体变量
在这个例子中,数组大小为6*int,结构体变量大小为2*int,可以得出这个数组包含三个结构体变量,所以有了上述的推断
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友1dec8868f
2013-06-09 · 超过12用户采纳过TA的回答
知道答主
回答量:59
采纳率:0%
帮助的人:31万
展开全部
很明显的选A。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式