C语言typedef问题,原类型名还有用吗

typedef struct S{intg;char h;}T;以下叙述中正确的是(B)
(A) 可用S定义结构体变量
(B) 可用T定义结构体变量
(C) S是struct类型的变量
(D) T是struct类型的变量========书上说Typedef语句的作用仅仅是用“标识符”来代表已存在的“类型名”,并未产生新的数据类型,原有类型名依然有效,为何答案A不对呢?参考答案是B,求大侠指教

在C里面,光写S不行,要写struct S,或者T
C++可以直接用S

可以的,只需要这s就行。

可以这么理解
typedef 是将 struct S 取别名为 T
所以可以用T 或者 struct S

我想问一下,答案C对吗??^_^

只是去别名,原来的名字当然可以用。在c里面,必须用struct S 来表明结构体类型。

楼下说的很对,并且原类型名还是有用的,如果定义结构体时,结构体成员类型是关于struct S的时候,那么是不能使用T的,必须使用struct S 来声明