2014-03-06 126 views
0

下面是我正在写的一个程序的功能,以便更熟悉节点。插入新节点

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

不幸的是它给了我一个不兼容的类型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; 
} 

回答

1

LibraryCodetypdef ED作为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*

+0

哦。好的。谢谢。 – user3386053