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

📅  最后修改于: 2021-06-29 19:05:15             🧑  作者: 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)。
(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)是正确的。
这个问题的测验
如果您在以上帖子中发现任何错误,请在下面发表评论