📜  门| GATE CS Mock 2018年|套装2 |第42章

📅  最后修改于: 2021-06-28 19:47:56             🧑  作者: 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都不为真答案: (B)
说明: S1: typedef用法不正确。基本上,在应用typedef本身时,我们还不能在内部使用typedef定义的数据类型。在这里,尚未定义NODEPTR(即typedef-ed),我们在结构本身内部使用了NODEPTR。

S2:是的。两者是等效的。以上声明中的任何一个都可以用于“ NODEPTR nodePtr;”。实际上,第一个是第二个的紧凑形式。
这个问题的测验