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

时间:2014-12-17 18:29:26

标签: c pointers struct

我无法解决以下问题:

我有一个结构:

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";

有谁知道这个问题似乎是什么?

1 个答案:

答案 0 :(得分:1)

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

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

不要忘记释放已分配的mempry,然后使用免费功能不再需要节点:

free( node1 );