当我尝试声明以下函数时
typedef struct TRIE_NODE
{
char* word;
struct TRIE_NODE node[26];
}TRIE_NODE;
我收到以下错误:
“struct TRIE_NODE”的定义直到结束“}”才完成
但是,如果我使用指向 26 个节点的指针来声明此函数,则它可以正常编译。
typedef struct TRIE_NODE
{
char* word;
struct TRIE_NODE* node[26];
}TRIE_NODE;
我想,由于这不是一个实例,我不可能获得指向这 26 个数组中第一个数组的指针,但如果这是问题所在,那么怎么办?TRIE_NODE* node[26]
不也是个问题吗?这个声明不等于TRIE_NODE node[1][26]
?
当我尝试声明以下函数时
Wait!!这不是一个函数,而是typedef
-ing 一个结构,一个用户定义的类型。
也就是说,在第一种情况下,
typedef struct TRIE_NODE
{
char* word;
struct TRIE_NODE node[26]; //array of type struct TRIE_NODE
}TRIE_NODE;
如果这必须是可能的,编译器需要知道的大小struct TRIE_NODE
before它已经被定义了,这是不可能的。所以是无效的。
另一方面,
typedef struct TRIE_NODE
{
char* word;
struct TRIE_NODE* node[26]; //array of pointers (of type struct TRIE_NODE)
}TRIE_NODE;
很好,当您将指针(数组)分配给结构时,编译器此时不需要知道结构的实际大小。因此,编译器愉快地分配指针,并且定义(构造)是完全有效的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)