听起来很复杂,但这是一个简单的概念。 假设你有一些结构" foo"如果它的成员是指向另一个foo结构的指针(如链接列表)
这似乎有用。
struct foo {
struct foo* ptr;
};
但是如果我想让foo成为一个类型呢?
我将如何执行以下操作?
typedef struct foo {
foo* ptr;
} foo;
ptr的声明失败,因为foo还不是限定符。
答案 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);
我的最后一点是你可以继续将结构与指针链接起来然后遍历它们。