插入新节点

这是我正在编写的程序的一个function,以便更熟悉节点。

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

不幸的是,它给了我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; } 

LibraryCodetypdefchar [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*