gpt4 book ai didi

c - 插入新节点

转载 作者:行者123 更新时间:2023-11-30 15:37:27 25 4
gpt4 key购买 nike

这是我正在编写的程序的一个函数,目的是为了更熟悉节点。

它创建一个新节点并将信息插入到代码字段中,然后指向现有的第一个节点。然后将head分配给新创建的节点;

不幸的是,它给了我 new_node->location = code; 的不兼容类型;

typedef char LibraryCode[4];

typedef struct node {
LibraryCode location;
struct node *next;
} Node;

void insertFirstNode(LibraryCode code, Node **listPtr) {
Node *new_node;
new_node=malloc(sizeof(Node));
new_node->location = code;
new_node->next = *listPtr;
*listPtr = new_node;
}

最佳答案

LibraryCodetypdef 编辑为 char [4]。您不能只将一个数组分配给另一个数组,您需要通过 memcpystrcpy 将数据从一个数组转移到另一个数组。

一个更简单的示例:

void foo() {
char a[4];
char b[4];
a = b;
}

编译会出现错误:

In function ‘foo’:
error: incompatible types when assigning to type ‘char[4]’ from type ‘char *’
a = b;
^

您可以看到,您实际上正在尝试将指针分配给数组,这是不兼容的类型。

<小时/>

typedef char LibraryCode[4]; 无论如何可能不是一个好主意。如果您要为节点中的字符串保留固定大小的缓冲区,那么我会放弃 typedef ,这样您就可以清楚地知道您在做什么。另外,我永远不会将 char [4] 按值传递给函数。对于字符串,请传递 const char*

关于c - 插入新节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22216607/

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