
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 展开
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 展开
展开全部
答案是A
将数组a自动按结构体分开,可以知道1和2是一个结构体变量;3和4是一个结构体变量;5和6是一个结构体变量;
p=a;的意思是 让结构体指针指向结构体数组的首个元素
那么由此可以p[0]是第一个结构体变量;p[1]是第二个结构体变量;p[2]是第三个结构体变量;
由分类可知,3是第二个结构体变量的成员x,所以正确的引用是 p[1].x
如果不明白可以追问,希望我的答案可以帮助到你
将数组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,可以得出这个数组包含三个结构体变量,所以有了上述的推断
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
很明显的选A。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询