gpt4 book ai didi

c++ - 是否可以在同一个未创建的结构中创建一个结构?

转载 作者:太空宇宙 更新时间:2023-11-03 10:39:08 26 4
gpt4 key购买 nike

下面的声明是否可行?如果是这样,您如何访问结构中的元素?它可以编译,但我无法访问这些元素。

struct node
{
int a;
struct node *next;
};
struct node *node1;
int main()
{
node1->a = 5; // I cannot perform this operation
return 0;
}

最佳答案

我认为您需要复习一下这门语言的基础知识。所以也许书单的链接是有序的:


解决您的问题:

在这里你定义了一个类型,即一个struct named node,它包含一个int类型的对象和一个指向对象的指针类型的对象类型节点(struct node*):

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

在这里你声明了一个类型为指针的全局对象指向一个节点类型的对象:

struct node *node1;

请注意,默认情况下指针是无效的,也就是说,它们不会自动指向一个对象。

所以你有一个指针,但你实际上没有节点类型的对象。因此,您不能取消引用指针。禁止访问指针当前恰好指向的(任意)内存位置。

int main()
{
node1->a = 5; // It is forbidden to perform this operation
return 0;
}

为了解决这个问题。您需要创建一个对象并让指针指向它。

例子:

int main() {
node n; // create an object of type node
node1 = &n; // Assign the address of the object n to the pointer
node1->a = 5; // Now it's allowed to dereference the pointer
}

最后:

Is it possible to create a struct inside the same uncreated struct?

您可以拥有一个包含指向相同类型对象的指针的类型。这对于实现递归数据结构很有用,例如链表或树。

进一步阅读:

关于c++ - 是否可以在同一个未创建的结构中创建一个结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48761831/

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