正确的是B,请查看谭浩强C语言第二版 294页关于 typedef 说明。
Typedef struct S
{
int g;
char h;
}T;
typedef 声明新的类型名,也就是定义一个新的数据类型。如果你看除去 typedef ,T就变成了声明一个结构体类型S:
struct S
{
int g;
char h;
};
加上typedef,T之后,这个T就等效于 struct S,是一个结构体类型。也就是说,typedef 只是将 struct S 另定义为一种新的数据类型T。
再看答案:
A 错误, S 不可以定义结构体变量,要加上 struct ,也就是 struct S + 结构体变量
B 正确, 因为T 等效于 struct S.
C 错误 S 不是变量,要和 struct 一起才有意义。
D 错误 T不是变量,是一种新的类型,等效于 struct S.