gpt4 book ai didi

c - 字符串与字符串文字 : Direct assignment or strcpy/strncpy?

转载 作者:行者123 更新时间:2023-12-02 01:05:48 27 4
gpt4 key购买 nike

我认为我在理解字符串和字符串文字时遇到一些问题。

这是我从类里面学到的,当传递给函数时,const char * 表示这是一个字符串文字,而 char * 表示一个字符串。

假设我有一个结构声明:

struct node{
char *name;
struct node *next;
};

还有一个函数,这是我要实现的函数:

void load_buffer(struct node *input_node, char *input_name);

此函数应该将 input_name 分配给结构的成员名称。

我的困惑来自这里。在load_buffer的主体中,我应该写:

input_node->name = input_name;

或者我应该使用 strcpy/strncpy 来执行此操作?

strcpy(input_node->name, input_name);// Suppose it's safe in this case.

总而言之,我不确定是否应该使用直接赋值或 strcpy 系列函数将字符串/字符串文字分配给结构体的成员。

感谢您的帮助。 :)

最佳答案

在指针分配的情况下,每个节点中的指针将指向相同的位置。因此节点将始终指向更新的值。如果您打算让每个节点包含不同的输入,那么这种方法不适合您的要求。

input_node->name = input_name;

对于strcpy,每个节点中的指针将指向不同的位置。在此之前,您需要为每个指针创建内存。

input_node->name = malloc(strlen(input_name)+1); //Allocate memory first.
strcpy(input_node->name, input_name);// Suppose it's safe in this case.

可视化: enter image description here

关于c - 字符串与字符串文字 : Direct assignment or strcpy/strncpy?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55722681/

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