Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 插入新节点_C_Linked List - Fatal编程技术网

C 插入新节点

C 插入新节点,c,linked-list,C,Linked List,这是我正在编写的一个程序的函数,目的是为了更熟悉节点 它创建一个新节点并将信息插入“代码”字段,然后指向现有的第一个节点。然后将头部分配给新创建的节点 不幸的是,它给了我一个新节点->位置=代码的不兼容类型 typedef char LibraryCode[4]; typedef struct node { LibraryCode location; struct node *next; } Node; void insertFirstNode(LibraryCode cod

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

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

不幸的是,它给了我一个新节点->位置=代码的不兼容类型

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;
}

LibraryCode
typdef
ed为
char[4]
。您不能只将一个数组分配给另一个数组,您需要
memcpy
strcpy
将数据从一个数组分配给另一个数组

下面是一个简单的例子:

void foo() {
   char a[4];
   char b[4];
   a = b;
}
编译此文件会出现以下错误:

函数“foo”中的
:
错误:从类型“char*”分配给类型“char[4]”时,类型不兼容
a=b;
^
您可以看到,实际上您正在尝试分配一个指向数组的指针,这是不兼容的类型


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