这题又不会,好心人帮帮忙呗!给下解题思路!谢谢!

来源:百度知道 编辑:UC知道 时间:2024/06/19 00:46:12
struct st
{char c[5];
char *ss;
};
struct st s[2]={{"ABCD","EFGH"},{"IJK","LMN"}};
struct su
{struct st sr;
int d;
}t={"OPQ","RST",32767};
struct st *p[]={&s[0],&s[1]};
main()
{printf("%c\n",p[0]->c[1]);
printf("%s\n",(++p[0])->ss);
printf("%c\n",t.sr.c[2]);
printf("%d\n",t.d+1);

}
答案是:
B
LMN
Q
-32768
这题都读不懂,说的详细一点,谢谢!

程序定义了两个结构体,分别定义两个数组给以赋值,并且定义指针指向。在主函数中使用printf语句输出,第一个printf语句p[0]->c[1],中 p[0]是指向s[0],而s[0]是"ABCD"所以p[0]->c[1]指向的是B.++p[0])->ss就类似,注意这里有++.
同样第三个语句是输出第二个结构体的变量中的值,t.sr.c[2]这里它没用指针指向,所以他要有变量再结构体名,才能指向相应里面的值.最后一个值要注意是值加1.
要必须理解结构体定义的作用.就是他可定义一个数组里面的值的数据类型可以是不同的.