C語(yǔ)言中一個(gè)結構不能包含指向自己的指針
我似乎不能成功定義一個(gè)鏈表。我試過(guò)typedef struct { char*item; NODEPTR next; } *NODEPTR; 但是編譯器報了錯誤信息。難道在C語(yǔ)言中一個(gè)結構不能包含指向自己的指針嗎?
C 語(yǔ)言中的`結構當然可以包含指向自己的指針; [K&R2, 第6.5 節] 的討論和例子表明了這點(diǎn)。NODEPTR 例子的問(wèn)題是在聲明next 域的時(shí)候typedef 還沒(méi)有定義。
為了解決這個(gè)問(wèn)題, 首先賦予這個(gè)結構一個(gè)標簽(“struct node”)。然后,聲明“next” 域為“struct node *”, 或者分開(kāi)typedef 定義和結構定義, 或者兩者都采納。以下是一個(gè)修改后的版本:
struct node {
char *item;
struct node *next;
};
typedef struct node *NODEPTR;
至少還有三種同樣正確的方法解決這個(gè)問(wèn)題。在用typedef 定義互相引用的兩個(gè)結構時(shí)也會(huì )產(chǎn)生類(lèi)似的問(wèn)題, 可以用同樣的方法解決。
【C語(yǔ)言中一個(gè)結構不能包含指向自己的指針】相關(guān)文章:
c語(yǔ)言指針面試常見(jiàn)問(wèn)題09-28
C語(yǔ)言程序的結構08-18
淺談C語(yǔ)言中循環(huán)結構的教學(xué)方法11-12
嵌入式C語(yǔ)言中結構體詳解201609-12
C++筆試題:關(guān)于鏈表和指針12-17