gpt4 book ai didi

c - 结构内的结构、结构的嵌套

转载 作者:行者123 更新时间:2023-11-30 20:15:45 27 4
gpt4 key购买 nike

我有

   struct node
{
int value;
struct node next;
};

如果我这样做,我会收到错误下一个字段的类型不完整

但是当我声明这样的结构时它工作正常,

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

为什么会出现这个错误?编译器可以知道结构节点已经被声明。

最佳答案

我不确定是否有人真正正确回答了您的问题。

由于多种原因,您无法使用该结构本身。首先,您现在已经使结构成为自引用,并且无法实际为其分配足够的空间。每次你尝试分配它时,它都会包含它自己的一个,它又包含它自己的一个,它又包含它自己的一个......永远。所以它需要无限的内存。其次,编译器还不知道这种类型的结构意味着什么,因为它还不完整。

但是,编译器确实知道指向该结构的指针将占用多少空间——它与指向任何其他类型的指针相同。

此外,由于结构本身的内存没有分配 - 只是一个指针 - 不存在无限递归。

由于添加指针不会产生取消引用,因此您不必拥有结构的完整定义,就可以知道要访问结构成员的内存偏移量。这必须等到结构完全定义。

关于c - 结构内的结构、结构的嵌套,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16980080/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com