【问题标题】:Pointer to a structure as a structure itself指向作为结构本身的结构的指针
【发布时间】:2018-05-28 12:54:07
【问题描述】:

我有以下sn-p的代码:

typedef int T;

typedef struct Node *pNode;

typedef struct Node{
    T item;
    pNode next;
}Node;

第一个和最后一个typedef 声明对我来说很清楚,但我似乎不明白第二个。
当它只是指向节点的指针时,为什么将其定义为结构?
为什么在pNode next; 语句中不将其称为指针?

【问题讨论】:

    标签: c struct typedef


    【解决方案1】:

    这个:

    typedef struct Node *pNode;
    

    创建pNode 作为struct Node * 类型的别名,即“指向struct Node 的指针”。

    我反对用typedef“隐藏”指针,但这很常见。

    我会写的:

    typedef struct Node {
      int item;
      struct Node *next;
    } Node;
    

    【讨论】:

    • I'm opposed to "hiding" pointers with typedef, but this is quite common. - 还有问题why my liked list does not workpointers do not work 等等 + 大量使用隐藏指针的荒谬古怪和糟糕的代码。顺便说一句,英国的许多大学都教授这种极坏的习惯。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多