求解一道C语言程序题~~
structstr1{char*s;charc[5];};main(){structstr1s1[2]={"ABCD","EFGH","IJK","LMN"};struc...
struct str1{
char *s;
char c[5];
};
main()
{struct str1 s1[2]={"ABCD","EFGH","IJK","LMN"};
struct str2
{struct str1 sr;
int d;
}s2={"OPQ","RST",0};
struct str1 *p[2];
p[0]=&s1[0];p[1]=&s1[1];
printf ("%s",++(*(p+1))->s;
printf("%c",s2.sr.c[2]);} 展开
char *s;
char c[5];
};
main()
{struct str1 s1[2]={"ABCD","EFGH","IJK","LMN"};
struct str2
{struct str1 sr;
int d;
}s2={"OPQ","RST",0};
struct str1 *p[2];
p[0]=&s1[0];p[1]=&s1[1];
printf ("%s",++(*(p+1))->s;
printf("%c",s2.sr.c[2]);} 展开
展开全部
这道题主要牵涉到指针:
1)第一个printf 的值:
有 struct str1 *p[2];
p[0]=&s1[0];p[1]=&s1[1];
可得到*(p+1)指向s1[1](即 "IJK","LMN")。
又因为 ++ (*(p+1))->s意思是指向字符串 "IJK" 的指针自增1,所以打印值为 JK
2)第二个printf的打印值:
有 struct str2
{
struct str1 sr;
int d;
}s2={"OPQ","RST",0}; 和 s2.sr.c[2] 是指向字符串 "RST" 的第三个字符 T,(因为数组从0开始,c[2]为第三个字符),即结果为 T。
故输出为 JKT
1)第一个printf 的值:
有 struct str1 *p[2];
p[0]=&s1[0];p[1]=&s1[1];
可得到*(p+1)指向s1[1](即 "IJK","LMN")。
又因为 ++ (*(p+1))->s意思是指向字符串 "IJK" 的指针自增1,所以打印值为 JK
2)第二个printf的打印值:
有 struct str2
{
struct str1 sr;
int d;
}s2={"OPQ","RST",0}; 和 s2.sr.c[2] 是指向字符串 "RST" 的第三个字符 T,(因为数组从0开始,c[2]为第三个字符),即结果为 T。
故输出为 JKT
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询