📜  门| Sudo GATE 2021 测验 |问题 18

📅  最后修改于: 2021-09-26 03:46:50             🧑  作者: Mango

考虑以下 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)是正确的。
这个问题的测验
如果您发现上面的帖子有任何错误,请在下面评论