C语言结构体一道题习题,求详解

运行下列程序段,输出结果是()structcountry{intnum;charname[10];}x[5]={1,"China",2,"USA",3,"France",... 运行下列程序段,输出结果是()
struct country
{
int num;
char name[10];
}x[5]={1,"China",2,"USA",3,"France",4, "England",5, "Spanish"};
struct country *p;
p=x+2;
printf("%d,%c",p->num,(*p).name[2]);
A) 3,a B) 4,g C) 2,U D) 5,S
答案是A 但是不知道怎么得来的,求详解
展开
 我来答
DJLMBLF2
推荐于2018-05-17 · TA获得超过147个赞
知道小有建树答主
回答量:82
采纳率:100%
帮助的人:67.7万
展开全部
结构体数组赋值后为:
x[0].num = 1;x[0].name="USA";
x[1].num = 2;x[1].name="USA";
x[2].num = 3;x[2].name="France";
.....
p是指向结构体的指针,p = x + 2 就相当于:p = x[0 + 2] = x[2];这时,p指向x[2]所在内存,p->num中->是指针访问它的变量的运算符,p->num就是x[2].num,就是3了,(*p)就是相当于把p指向的内存取出里面的数据,那么就变成了非指针变量,然后用“.”运算符访问它的变量name数组,x[2].name为"France",第一个F下标是0,那么下标为2的字母是a,答案就出来了。。。。。。。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式