📜  门| GATE CS 2021 |设置 1 |第 49 题(1)

📅  最后修改于: 2023-12-03 14:58:21.607000             🧑  作者: Mango

GATE CS 2021 设置 1 第 49 题

这是 GATE CS 2021 的第一次设置,第 49 题。该问题是关于在 C/C++ 中使用结构体和指针的基本知识。

问题描述

给定下面的 C 语言代码片段:

#include <stdio.h>
struct student{
    char name[30];
    int age;
    float cgpa;
};
int main(){
    struct student s1 = {"John Smith", 22, 8.0};
    struct student s2;
    s2 = s1;
    printf("%s %d %f", s2.name,s2.age,s2.cgpa);
    return 0;
}

下面有哪些语句是正确的?

(A) struct student s3 = s1;

(B) struct student *s4 = &s1;

(C) struct student *s5; s5 = s4;

(D) struct student s6; s6 = *s4;

解题思路

在该问题中,我们首先定义了一个学生结构体数据类型,其中包括了学生姓名、年龄和绩点等信息。然后创建了一个名为 "s1" 的结构体变量并对其进行初始化。接着又定义了一个名为 "s2" 的结构体变量,并将其赋值为 "s1"。最后,我们打印出了 "s2" 中的姓名、年龄和绩点等信息。

所以,正确选项为 B、C、D。

选项 B 中,定义了一个指向结构体 "s1" 的指针变量 "s4",并将其指向 "s1" 的地址。

选项 C 中,我们定义了一个结构体指针变量 "s5" 并将其指向 "s4" 所指的地址,将 "s5" 和 "s4" 指向了同一个地址。

选项 D 中,定义了一个名为 "s6" 的结构体变量,然后用 "s4" 所指的值对其进行初始化。

而选项 A 是错误的,因为结构体赋值是不允许的。

参考文献