A-A+

设有如下说明 typedef struct ST { long a; int b; char

2022-08-06 05:19:02 问答库 阅读 176 次

问题详情

设有如下说明 typedef struct ST { long a; int b; char c[2];} NEW; 则下面叙述中正确的是
A.以上的说明形式非法
B.ST是一个结构体类型
C.NEW是一个结构体类型
D.NEW是一个结构体变量请帮忙给出正确答案和分析,谢谢!

参考答案

正确答案:C
解析:将题目中的定义语句去掉前面的typedef和后面的NEW(分号保留),就是一条完整的结构体定义语句,其中struct是说明符,ST是结构体名,大括号里面的是结构体成员的定义。此时要声明该结构体变量时需要使用struct加结构体名一起来声明,struetST一起构成一个结构体类型,就好像字符类型char.若只去掉前面的typedef,就是一条结构体定义同时声明一个结构体变量NEW的语句,因为NEW的前面部分是structST的完整写法。可以看作是structST.C语言允许用typedef说明一种新类型名,其语法格式为:typedef类型名标识符;以后就可以用该标识符来代替被说明的类型名了。因此,当前面存在typedef时,该语句就变成了给stmctST的完整写法定义一个新的名称NEW。所以,此时的NEW是一个结构体类型,它相当于structST,即可以和char一样单独用来声明该结构体变量,而ST只是一个结构体名,不能单独用来声明变量。所以,4个选项中C符合题意。

考点: