链表的结构如何知道其自身类型的下一个指针的类型?

How does the struct of a linked list know the type of next pointer of its own type?

struct node
{
    int     data;
    node*   pointerToNextNode;
};

这里的pointerToNextNodestruct node的类型,是在struct内部声明的。 结构如何知道其自身类型的下一个指针的类型 - 当它本身尚未形成时?

没有使用关键字extern。这是如何工作的?

Here pointerToNextNode is the type of struct node

不,不是。它的类型是 struct node *

struct node* pointerToNextNode; 为类型为 struct node.
pointer 变量分配内存 它不会为 struct node 分配内存,因此,到此为止,它不需要知道 struct node 的大小和表示形式。只有(数据)类型名称就足够了。

此外,值得一提的是,如果没有 typedefnode* pointerToNextNode; 应该无效。应该这样写

typedef struct node node; 

struct node 
{ 
    int data; 
    node* pointerToNextNode; 
};

顺便说一句,如果我没记错的话,private: 不是 C 的东西。

对我来说,这不是使用 CC 编译的——正是因为你所说的。 您必须使用 struct node * 让编译器知道您需要 pointer

的内存

不需要知道结构,知道类型名就够了,即struct node——而且已经定义好了。

通过前向类型声明可以获得相同的结果:

struct node;            // declare the struct not defining it
struct node *pointer;   // declare variable

void foo()
{
    if(pointer != NULL)        // OK, we use the pointer only
        if(pointer->x == 0)    // invalid use - struct contents unknown yet
            return;
}

struct node {           // supply a definition
    int x;
};

void bar()
{
    if(pointer != NULL)
        if(pointer->x == 0)    // OK - struct contents already known
            return;
}