我有一个结构foo
。声明foo*
类型的成员有效:
typedef struct foo
{
struct foo* children[26];
} foo;
但是如果我尝试声明foo
类型的成员,我会收到错误:
typedef struct foo
{
struct foo children[26];
} foo;
此声明给我错误
&p; struct foo'定义' struct foo'在收到结束之前尚未完成'}'
答案 0 :(得分:4)
结构T
不能包含自身。你怎么知道它的大小?这样做是不可能的,因为T
的大小会要求您知道T
的大小(因为T
包含另一个T
)。这变成了无限递归。
您可以在结构T
内有一个指向T
的指针,因为指针的大小与指向对象的大小不同:在这种情况下,您只需存储一个地址存储另一个T
的内存 - 你需要做的所有空间基本上是你需要存储另一个T
生存的内存地址所需的空间。
答案 1 :(得分:0)
结构 Trie 中不能包含其他结构 Trie ,它会进行永无止境的递归,但它可能包含指向另一个结构的指针 Trie < / em>的
所以第一个是正确的
typedef struct TRIE
{
bool is_endpoint;
bool is_initialized;
struct TRIE* children[26];
} TRIE;
答案 2 :(得分:0)
currentptr
的值是否为非NULL,然后才能访问currentptr
的字段(例如is_endpoint
)。