我學習C以「學習C艱難的歷程」,並在運動32的宣言,我發現這個代碼在頭文件:中的C結構在頭(鏈表)
struct ListNode;
typedef struct ListNode {
struct ListNode *next;
struct ListNode *prev;
void *value;
} ListNode;
typedef struct List {
int count;
ListNode *first;
ListNode *last;
} List;
我問題是,爲什麼作者寫:
struct ListNode;
,然後繼續的typedef:
typedef struct ListNode {
struct ListNode *next;
struct ListNode *prev;
void *value;
} ListNode;
是否有之前DEF聲明結構的一個原因在一個typedef?
在閱讀「學習難題」時,應該意識到[它被某些人認爲是不好的資源](http://www.iso-9899.info/wiki/Main_Page#Stuff_that_should_be_avoided)。也可以在該網站上找到指向被認爲「可接受」的材料的書籍鏈接和參考。如[此處所示](http://www.iso-9899.info/wiki/Snippets#Defining_a_structure_that_has_a_pointer_member_to_its_own_type),您實際上可以在'struct ListNode {ListNode * next;}之前使用'typedef struct ListNode ListNode; ListNode * prev; void * value; };'也完全可以。 –
您的鏈接將幫助我很多。謝謝 –