gpt4 book ai didi

c - C中的结构类型

转载 作者:太空狗 更新时间:2023-10-29 16:06:37 25 4
gpt4 key购买 nike

我有一个非常基本的问题。在 C 语言中,我们声明这样的结构:

片段 1:

struct node {
int a;
int b;
char c;
};

我了解结构背后的基本概念。可以从很多角度来看。它是一个“结构”,用于创建用户定义的类型。

除非我们为它定义对象,否则结构是无用的。我们可以像这样为其创建对象:

struct node obj1;
obj1.a=10; // corresponds to the value of obj1
obj1.c='A'; // ....
and so on..

好的,现在我无法理解以下代码片段。

片段 2:

struct node {
node* left;
node* right;
int value;
};
  1. 我们如何在名为node结构 中定义node* leftnode* right 当结构节点 还没完全成型?
  2. 这到底是什么意思?怎么可能指向还没有形成的东西呢?
  3. 当我们创建 node 的对象时,它怎么知道要分配的对象的大小?

谁能帮我解决这个问题?

编辑:问题中的代码不是有效的 C 代码,而是有效的 C++ 代码

最佳答案

在结构节点还没有完全形成的情况下,如何在名为节点的结构中定义节点*左和节点*右?

  • node * 是指针,指针不需要完整定义。仅类型声明就足够了。

这到底是什么意思?怎么可能指向还没有形成的东西呢?

  • 这样的结构被称为自引用。他们可以引用一个对象,该对象(必须)具有与它们相同的类型。这是链表、树、图和许多数据结构的基础之一。

当我们创建节点对象时,它怎么知道要分配的对象的大小?

  • 由于对象包含指针,指针的大小是固定的,并且在知道完整的对象之前是已知的。因此,可以分配对象的大小。在这种情况下,它将是数据成员的大小+指针的大小+一些填充。

关于c - C中的结构类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29405118/

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