c语言结构体定义问题求解

为什么ABC是错的?
结构体咋定义,求解

img

A中,typedef 是把结构体定义成另一个名称,A这么写的话,就是把结构体student定义成s,s是student结构体的别名,但是题目要求是定义结构体变量,所以,A不正确。
结构体变量的定义是struct student s; sturct是关键字,不是结构体名,所以B错误
C中则是漏写了struct关键字。(在标准C中要求必须加struct关键字)所以C错误。

在C语言中,结构体(struct)指的是一种数据结构,是C语言中复合数据类型(aggregate data type)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。
结构体的定义如下所示,struct为结构体关键字,tag为结构体的标志,member-list为结构体成员列表,其必须列出其所有成员;variable-list为此结构体声明的变量。

 struct tag { member-list } variable-list ; 

访问:


struct SIMPLE
{
    int a;
    char b;
};

//声明结构体变量s1和指向结构体变量的指针s2
struct SIMPLE s1, *s2;

//给变量s1和s2的成员赋值,注意s1.a和s2->a并不是同一成员
s1.a = 5;
s1.b = 6;
s2->a = 3;
s2->b = 4;

a多了typedef
b,c声明变量名错误