考虑以下 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)。
(一)极客班
(乙) 100
(三)学生
(四) 200答案: (A) (C) (D)
说明:这里的结构是数据类型,包含整数类型和字符串。字符串的基地址,
eclasses=1000
geeks=2000
data=3000
structure=4000
students=5000
p 包含 str 数据类型的基地址。
p=p+1
表示跳转到数组 str 中的索引 0 到索引 1 <200,2000>。
第一个打印语句,p->c 指向字符串的基地址,打印语句打印到在字符串找到 null。
geeks
第二个打印语句
p– 表示回到索引 0,
++p -> c 表示遍历字符串一字节并打印剩余的字符串
classes,
第三个打印语句
p[1].i 打印存储在 1 个索引处的整数。
200,
第四个打印语句
p=p+4 表示转到索引 4
p->c 打印存储在索引 4 处的字符串
students
因此,选项(A)、(C)和(D)是正确的。
这个问题的测验
如果您发现上面的帖子有任何错误,请在下面评论