C 指向结构中自己的类型的指针?

C 指向结构中自己的类型的指针?,c,C,可能吗 typedef struct { listLink *next; listLink *prev; void *data; } listLink; 是的,有这种联会 struct list { int value; struct list *next; }; 或 是的,但是typedef直到语句的后面才会出现,所以需要给结构本身一个名称。例如 struct listLink { struct listLink *next;

可能吗

typedef struct {
    listLink *next;
    listLink *prev;

    void *data;
} listLink;

是的,有这种联会

struct list {
    int   value;
    struct list  *next;
};


是的,但是typedef直到语句的后面才会出现,所以需要给结构本身一个名称。例如

struct listLink {
    struct listLink *next;
    struct listLink *prev;

    void *data;
};

如果不想将每个实例声明为
struct listLink

的话,可以将其包装在typedef中,这在osgrx给定语法的情况下是可能的。此外,这称为链表:

选择一个名称,然后使用typedef定义它。每个链表都需要一个结构,即使它只有一个变量:

typedef struct product_data PRODUCT_DATA;
定义结构。最后一个元素应该是指向刚定义的类型的指针,名为“next”:

我更喜欢这个版本:

typedef struct listLink listLink ;

struct listLink{
    listLink *next;
    listLink *prev;

    void *data;
} ;
它清楚地将结构与、成员和变量分开


对struct和typedef使用相同的名称,
struct-listLink,listLink
,这不是问题,因为它们有不同的名称空间。

我知道什么是血腥的链表:当你问这种问题时,你似乎不会这样做;)tm1rbt最初遇到的困惑是不定义结构的经典论据。在客户机代码中编写“struct listLink”并不那么繁重。使用typedef很模糊,完全没有必要。相关:
struct product_data {
 int product_code;
 int product_size;
 PRODUCT_DATA *next;
};
typedef struct listLink listLink ;

struct listLink{
    listLink *next;
    listLink *prev;

    void *data;
} ;