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 但是不知道怎么得来的,求详解 展开
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 但是不知道怎么得来的,求详解 展开
1个回答
展开全部
结构体数组赋值后为:
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,答案就出来了。。。。。。。
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,答案就出来了。。。。。。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询