2014-03-06 129 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