0

看到这个结构

typedef struct Node{
    void *data;
    int pos;
    struct Node *prev;
    struct Node *next;
}*lptr;

我想知道为什么Nodeis*lptr和 not的 typedef lptr。指针有什么区别?

4

3 回答 3

3

虽然通常有两个typedefs - 一个用于struct避免标记,一个用于struct指针以避免星号,像这样

typedef struct Node{
    void *data;
    int pos;
    struct Node *prev;
    struct Node *next;
} Node;
typedef Node* lptr;

如果作者想避免在lptror之后写星号Node,他们当然typedef可以指向struct Node.

于 2013-11-13T14:49:43.450 回答
2

typedef 用于指针类型。

lptr是类型struct Node*

于 2013-11-13T14:49:00.103 回答
1

Because the definition (the typedef) is to a pointer type. Removing it makes lptr of type Node, * makes it a pointer to a Node.

于 2013-11-13T14:50:05.250 回答