考虑下面的C程序:
#include
#include
struct s {
int i;
char *c;
} str[] = {100, "eclasses", 200, "geeks",300, "data",400,"structure",500,"students"};
int main()
{
struct s *p = str;
p += 1;
printf("%s", p -> c);
p--;
printf("%s,", ++p -> c);
printf(" %d, ", p[1].i);
p=p+4;
printf("%s", p -> c);
}
哪个字符串在上述C程序的最终输出中?
注–该问题是多项选择题(MSQ)。
(A)极客班
(B) 100
(三)学生
(D) 200答案: (A) (C) (D)
说明:这里的结构是包含整数类型和字符串的数据类型。字符串的基地址,
eclasses=1000
geeks=2000
data=3000
structure=4000
students=5000
p包含str数据类型的基地址。
p=p+1
表示在数组str中跳转到索引0到索引1 <200,2000>。
第一个print语句p-> c指向字符串的基地址,并且print语句print直到在字符串找到null为止。
geeks
第二份印刷声明
p –表示返回索引0,
++ p-> c表示将字符串遍历一个字节并打印剩余的字符串
classes,
第三份印刷声明
p [1] .i打印存储在1索引处的整数。
200,
第四份印刷声明
p = p + 4表示转到索引4
p-> c打印字符串存储在索引4
students
因此,选项(A),(C)和(D)是正确的。
这个问题的测验
如果您在以上帖子中发现任何错误,请在下面发表评论