itgle.com

有以下程序段 typedef struct node { int data; struct node *next; } *NODE; NODE p; 以下叙述正确的是( )。A.p是指向struct node结构变量的指针的指针B.NODE p;语句出错C.p是指向struct node结构变量的指针D.p是struct node结构变量

题目

有以下程序段 typedef struct node { int data; struct node *next; } *NODE; NODE p; 以下叙述正确的是( )。

A.p是指向struct node结构变量的指针的指针

B.NODE p;语句出错

C.p是指向struct node结构变量的指针

D.p是struct node结构变量


相似考题
更多“有以下程序段typedefstructnode{intdata;structnode*next;}*NODE;NODEp; 以下叙述正确的 ”相关问题
  • 第1题:

    有以下程序段: typedef struct NODE {int num; struct NODE * next; }OLD; 以下叙述中正确的是( )。

    A.以上的说明形式非法

    B.NODE是一个结构体类型

    C.OLD是一个结构体类犁

    D.OLD是一个结构体变量


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

  • 第2题:

    有以下程序段: typedef struct node(int data;struct node*next;)*NODE; NODE P; 以下叙述中正确的是( )。

    A.P是指向struct node结构变量的指针的指针

    B.NODE p;语句出错

    C.P是指向struct node结构变量的指针

    D.P是struct node结构变量


    正确答案:C
    解析:本题中定义了一个指针类型的“用户类型名”NODE,通过“用户类型名”可以定义该类型的结构体变量。

  • 第3题:

    有以下程序段: typedef struct NODE { int num; struct NODE * nex; } OLD; 以下叙述中正确的是( )。

    A.以上的说明形式非法

    B.NODE是一个结构体类型

    C.OLD是一个结构体类型

    D.OLD是一个结构体变量


    正确答案:C
    解析:typedef关键字用于声明一个新的类型名代替已有的类型名。本题中如果没有用typedef进行定义的话,则structNODE为结构体类型,而用typedef定义后,相当于用OLD代表了struetNODE这一结构体类型,故OLD为结构体类型。

  • 第4题:

    有下列程序段: typedef struct NODE {int num;struct NODE*next; }OLD; 下列叙述中正确的是( )。

    A.以上的说明形式非法

    B.NODE是一个结构体类型

    C.OLD是一个结构体类型

    D.OLD是一个结构体变量


    正确答案:C
    解析:C语言允许用typedef说明一种新类型名,其一般形式为:typedef类型名 标识符。typedef语句的作用仅仅是使“标识符”来代表已存在的“类型名”,并未产生新的数据类型。原有类型名依然有效。此题中,用使typedef定义了新的类型OLD结构,所以OLD为结构体类型。

  • 第5题:

    有以下程序段 typedef struct NODE {int num; struct NODE *next; }OLD; 以下叙述中正确的是

    A.以上的说朗形式非法

    B.NODE是一个结构体类型

    C.OLD是一个结构体类型

    D.OLD是一个结构体变量


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