c语言 - 你能键入一个以前的 typedef'd 语句吗?



我被指派处理一些代码,但事先给了我一部分代码。它包括这部分代码:

typedef int ElementType;
struct Node;
typedef struct Node *PtrToNode;
typedef PtrToNode List;
typedef PtrToNode Position;
struct Node {
ElementType Element;
Position Next;
Position Previous;
};

我的理解是,

  1. 我们现在不用写 int 来写 ElementType 来定义一个整数的值。(困惑#1(
  2. 我们定义了一个名为 Node 的结构。(我不确定为什么这里没有定义它(。
  3. 我们typedefPtrToNode 作为名为 Node 的结构的指针。
  4. 我们typedef列为PtrToNote。这应该意味着List也是指向名为Node的结构的指针。此指针称为列表。(困惑#2(
  5. 与数字 4 类似,但这个称为位置。
  6. 我们定义如何设置结构。在这种情况下,根据我们之前的定义,Element 应该是一个 int。下一个和上一个应该是位置的指针?但是,如果我要用列表更改位置,这将如何影响代码?

有人可以向我解释#1、2、4和6点吗?我是否正确理解了代码?

我们现在可以编写 ElementType 来定义一个整数,而不是写 int。(困惑#1(

这是正确的 - 例如:

int a = 50;

现在相当于

ElementType a = 50;

我们定义了一个名为 Node 的结构。(我不确定为什么这里没有定义它(。

这是(向前(声明一个名为 Node 的结构,而不是定义结构

我们类型化 PtrToNode 作为名为 Node 的结构的指针。

你在这里的理解也是正确的。因此,以下内容是等效的:

struct Node *x;
PtrToNode x;

我们键入 def List 作为 PtrToNote。这应该意味着List也是指向名为Node的结构的指针。此指针称为列表。(困惑#2(

ListPtrToNode表示相同的类型 - 以下示例都执行相同的操作:

struct Node *x;
PtrToNode x;
List x;

与数字 4 类似,但这个称为位置。

正确。

我们定义如何设置结构。在这种情况下,根据我们之前的定义,Element 应该是一个 int。下一个和上一个应该是位置的指针?但是,如果我要用列表更改位置,这将如何影响代码?

这是定义结构Node。将Position替换为List对代码没有影响。到两种类型是兼容的。

相关内容

  • 没有找到相关文章

最新更新