反正有这个值给我的节点

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

在我的功能之一中,我想创建一个新节点并向其中添加一个值,但是它不起作用。

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

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

  return node;
}

我收到错误消息:

  

警告:赋值从指针目标中丢弃“ const”限定符   输入[-Wdiscarded-qualifiers]

nana0124 回答:反正有这个值给我的节点

您当前的代码所做的只是将一个字符串(给定参数)的地址复制到另一个(struct数据成员)中。这就是编译器生成警告的原因:“参数”值指向无法更改的字符串; “ 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);

随时要求进行进一步的澄清/说明。

本文链接:https://www.f2er.com/3132267.html

大家都在问