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