我在很多C語言代碼中看到很多定義結構體時使用typedef struct,而不適用struct,就瞭解了這樣做的原因:
typedef是類型定義的意思。typedef struct 是爲了使用這個結構體方便。
具體區別在於:
(1)若struct node {}這樣來定義結構體的話。在申請node 的變量時,需要這樣寫,struct node n;
(2)若用typedef,可以這樣寫,typedef struct node{}NODE; 。在申請變量時就可以這樣寫,NODE n;
區別就在於使用時,是否可以省去struct這個關鍵字。
=========================================================
定義結構變量的一般格式爲:
struct 結構名
{
類型 變量名;
類型 變量名;
...
} 結構變量;
結構名是結構的標識符不是變量名。
另一種常用格式爲:
typedef struct 結構名
{
類型 變量名;
類型 變量名;
...
} 結構別名;
===========================================================
分兩塊來講述:
1 )首先:
在C中定義一個結構體類型要用typedef:
typedef struct Student
{
int a;
}Stu;
於是在聲明變量的時候就可:Stu stu1;如果沒有typedef就必須用struct Student stu1;來聲明,這裏的Stu實際上就是struct Student的別名。
另外這裏也可以不寫Student(於是也不能struct Student stu1了)
typedef struct
{
int a;
}Stu;
2)如果在c程序中我們寫:
typedef struct
{
int num;
int age;
}aaa,bbb,ccc;
這算什麼呢?我個人觀察編譯器(VC6)的理解,這相當於
typedef struct
{
int num;
int age;
}aaa;
typedef aaa bbb;
typedef aaa ccc;
也就是說aaa,bbb,ccc三者都是結構體類型。聲明變量時用任何一個都可以,在c++中也是如此。但是你要注意的是這個在c++中如果寫掉了typedef關鍵字,那麼aaa,bbb,ccc將是截然不同的三個對象。