📜  门| GATE CS Mock 2018 |设置 2 |第 42 题

📅  最后修改于: 2021-09-24 05:48:18             🧑  作者: Mango

S1:以下任何一个都可以用来声明一个单向链表的节点。如果我们使用第一个声明,“struct node * nodePtr;”将用于声明指向节点的指针。如果我们使用第二个声明,“NODEPTR nodePtr;”可用于声明指向节点的指针。

/* First declaration */
struct node {
int data;
struct node * nextPtr;
};

/* Second declaration */
typedef struct node{
int data;
NODEPTR nextPtr;
} * NODEPTR;

S2:以下任何一个都可以用来声明一个单向链表的节点和“NODEPTR nodePtr;”可用于使用以下任何一种声明指向节点的指针

/* First declaration */
typedef struct node
{
 int data;
 struct node *nextPtr;
}* NODEPTR;

/* Second declaration */
struct node
{
 int data;
 struct node * nextPtr;
};
typedef struct node * NODEPTR;

(A)陈述 S1 为真,陈述 S2 为假
(B)陈述 S2 为真,陈述 S1 为假
(C) S1 和 S2 都为真
(D)陈述 S1 和陈述 S2 都不为真答案:(乙)
说明: S1: typedef用法不正确。基本上,我们不能在应用 typedef本身时使用尚未被 typedef-ed 的数据类型。这里,NODEPTR 尚未定义(即 typedef-ed),我们在结构本身内部使用 NODEPTR。

S2:是的。两者是等价的。上述任一声明均可用于“NODEPTR nodePtr;”。事实上,第一个是第二个的紧凑形式。
这个问题的测验