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