詳細講解struct這個容易混淆的寫法的書是有的,《C專家編程》中就有詳細的描述。可惜大家喜歡問問題有甚于喜歡看書,于是BBS上泛濫著前人早已經解決、說明清楚的問題。哎,中國勤學好問者的悲哀。這里簡要說明一下struct,為大家省錢。
/**//* struct.c* 本程序演示了struct的種種寫法。注意,所有這些寫法都能編譯通過* author: smileonce* date : 2005-01-14*/// 這種寫法是最要命的,但是它卻可以通過, 最后面那個foo是結構體的實例struct foo{ int foo;} foo;// 有了typedef,意義明顯與上面不同,注意的是struct后面那個標簽可以不寫,最后面那個bar是匿名結構體的別名typedef struct { int bar;} bar;// 這種寫法是最沒人用的,因為它的定義是一次性的,struct1是一個匿名struct的實例struct { int aaa;} mystruct1;//最常用的寫法,清晰不言自明,my_struct_tag是結構體標簽,my_struct_type是struct my_struct_tag的別名typedef struct my_struct_tag{ int aaa;} my_struct_type;// 下面兩種定義的寫法都可以,當然使用typedef定義的寫法更簡潔些my_struct_type mystruct2; //通過typedef定義的結構別名來定義變量struct my_struct_tag mystruct3; //通過結構標簽定義變量int main(int argc, char *argv[]){ return 0;}
-------------