反正有没有给我的节点这个值
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。
我有一个学校项目需要创建一个双向链表。
在我的一个函数中,我想创建一个新节点并为其添加一个值,但它不起作用。
函数名和参数无法更改,我需要将这个声明为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。