gpt4 book ai didi

c - 如何使用指针更改结构成员的值

转载 作者:太空宇宙 更新时间:2023-11-04 03:42:15 24 4
gpt4 key购买 nike

我无法解决以下问题:

我有一个像这样的结构:

enum node_type {
FRUIT,
QUESTION
};
typedef enum node_type type;

struct node {
type node_type;
union node_info {
char *fruit;
char *question;
}data;
struct node *left;
struct node *right;
};
typedef struct node node_p;

当我尝试访问成员类型(枚举)时,我无法更改它的值。它编译,但当我运行它时,我得到一个“段错误”。在我的主要方法中,我有这样的东西:

node_p *node1 = NULL;
node1->node_type = FRUIT;
node1->data.question = "Apple";

有人知道问题出在哪里吗?

最佳答案

您必须为节点分配内存。例如

node_p *node1 = malloc( sizeof( node_p ) );
if ( node1 != NULL )
{
node1->node_type = FRUIT;
node1->data.question = "Apple";
}

并且不要忘记释放分配的内存,然后使用 free 函数将不再需要该节点:

free( node1 );

关于c - 如何使用指针更改结构成员的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27532348/

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