標籤:對象 方式 article c++ html key 變數 mod typedef
在C中定義一個結構體要用typedef,如:
typedef struct Student { int a;}Stu;
於是在聲明變數的時候就能夠:Stu stu1;(假設沒有typedef就必須用struct Student stu1;來聲明)。這裡的Stu實際上就是struct Student的別名:Stu == struct Student.
當然事實上這裡能夠不寫Student,例如以下:
typedef struct { int a;}Stu;
這裡也就必須使用Stu stu1來聲明對象了。
請看以下的代碼:
typedef struct tagMyStruct{ int iNum; long lLength;} MyStruct;
上面的tagMyStruct是標識符,MyStruct是變數類型。上述代碼事實上完畢了兩個操作:
(1)定義一個結構體:
struct tagMyStruct{ int iNum; long lLength;};tagMyStruct稱為tag,即標籤。實際上是一個暫時名字。不論是否有typedef structkeyword和tagMyStruct一起。都構成了這個結構體。此時我們能夠使用struct tagMyStruct varName來定義變數。
可是注意。使用tagMyStruct varName來定義變數是不正確的。
由於struct和tagMyStruct合在一起才幹表示一個結構體類型。
(2)typedef為這個新的結構起了一個名字,叫MyStruct.
typedef struct tagMyStruct MyStruct. 因此MyStruct實際上相當於struct tagMyStruct,我們能夠使用MyStruct varName來定義變數。
對於相同的代碼。在C和C++中也有不同的理解。例如以下:
typedef struct tagMyStruct{ int iNum; long lLength;} MyStruct;在C中。這個結構體聲明結構體變數的方式有兩種:
1)struct tagMyStruct 變數名。
2)MyStruct 變數名。
在C++中:
1)struct tagMyStruct 變數名;
2)MyStruct 變數名。
3)tagMyStruct 變數名;
本文參考:http://www.cnblogs.com/qyaizs/articles/2039101.html
C語言typedef struct具體解釋