反正有没有给我的节点这个值

Is there anyway to give this value to my node

我有一个学校项目需要创建一个双向链表。

在我的一个函数中,我想创建一个新节点并为其添加一个值,但它不起作用。

函数名和参数无法更改,我需要将这个声明为const的字符串放入一个声明为非const的字符串中。

static struct node *make_node(const char *value)
{
  struct node *node;
  node = malloc(sizeof(node));
  node->value = value;

  return node;
}

我收到错误消息:

warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]

您当前的代码所做的只是将一个字符串(给定参数)的地址复制到另一个字符串(struct 数据成员)。这就是编译器生成警告的原因:"parameter" 值指向一个无法更改的字符串; "struct" 值指向一个可以更改的值。

为了复制实际的字符串数据,您首先需要分配足够的内存来保存字符串数据,然后将数据复制到其中:

static struct node *make_node(const char *value)
{
    struct node *node;
    node = malloc(sizeof(node));
    node->value = malloc(strlen(value) + 1); // Add 1 to accommodate the nul-terminator
    strcpy(node->value, value);
//  node->value = value;
    return node;
}

或者,您可以使用 strdup 函数(这将为您进行分配和复制):

node->value = strdup(value);

欢迎进一步询问 clarification/explanation。