结构可以有一个成员,它是指向同一类型结构的指针吗?

时间:2014-08-04 00:05:48

标签: c pointers struct qualifiers

听起来很复杂,但这是一个简单的概念。 假设你有一些结构" foo"如果它的成员是指向另一个foo结构的指针(如链接列表)

这似乎有用。

struct foo {
   struct foo* ptr;
};

但是如果我想让foo成为一个类型呢?

我将如何执行以下操作?

typedef struct foo {
   foo* ptr;
} foo;

ptr的声明失败,因为foo还不是限定符。

2 个答案:

答案 0 :(得分:5)

转发声明定义。

typedef struct foo {
    struct foo* ptr
} foo;

或者您可以转发声明类型声明。

typedef struct node_t node_t;

typedef struct node_t {
   node_t *next;
} node_t;

答案 1 :(得分:1)

进一步实施Casper Von B的回答:

如果你有几个变量类型,比如int,可能是struct中的char数组,你需要使用malloc:

node_t *ptr = malloc(sizeof(node_t));

您可以使用 - >操作员和。运算符选择变量:

ptr -> x = 12;

然后,完成后使用free()进行垃圾收集:

free(ptr);

我的最后一点是你可以继续将结构与指针链接起来然后遍历它们。