若struct后面接的是名字,則其為該結構體的名稱。
第一種是最基本的結構體定義,其定義了一個結構體A。
struct A //第一種 { int a; };
第二種則是在定義了一個結構體B的同時定義了一個結構體B的變量m。
struct B //第二種 { int b; }m;
第三種結構體定義沒有給出該結構體的名稱,但是定義了一個該結構體的變量n,也就是說,若是想要在別處定義該結構體的變量是不行的,只有變量n這種在定義結構體的同時定義變量才行。
struct //第三種 { int c; }n;
第四種結構體定義在第一種結構定義的基礎上加了關鍵字typedef,此時我們將struct D{int d}看成是一個數據類型,但是因為並沒有給出別名,直接用D定義變量是不行的。如D test;,不能直接這樣定義變量test。但struct D test;可行。
typedef struct D //第四種 { int d; };
第五種結構體定義在第四種結構體定義的基礎上加上了別名x,此時像在第四種結構體定義中說得那樣,此時的結構體E有別名x,故可以用x定義E的結構體變量。用E不能直接定義,需要在前面加struct,如struct E test;。
typedef struct E //第五種 { int e; }x;
第六種結構體定義在第五種的基礎上減去了結構體名,但是若是直接使用y來定義該結構體類型的變量也是可以的。如y test;。(常用)
typedef struct //第六種 { int f; }y;