由於網友的多次提問
.並且沒有個完整的回答
.這裡給出總結
,遺漏的話大家補充.首先
,必須明白的是
,typedef
和struct
是兩個不同的定義式
,typedef typename1 typename2; //,
兩個type
的名字在該定義式的可見範圍內是等價的
struct typename3 ; //
這是乙個
type
的定義式,在
c中
,必須這樣使用
: struct typename3 ob;
那麼好,
現在可以考慮一些具體的情況,情況
1:有時候
typename3
只需要乙個實體
.那麼這個
type
的名字就沒意義存在了
, 於是
,struct objectname;
對於編譯器來說這兒有兩個定義式
:struct tempname ;
struct tempname objectname;
情況2:
有時候,
我們覺得
struct typename objectname
這個寫法太麻煩
,那麼你可能希望有簡單寫法,於是
typedef structtypename4;
//於是你可以
tempname4 objectname;
對於編譯器來說這裡也有兩個定義式
struct tempname ;
typedef tempname typename4; //
注意他們的順序.情況
3:情況
2會遇到乙個問題
,如果結構體中要是有自身
type
的成員怎麼辦呢
?typedef struct typename4;
看去好像很合理
?那麼到編譯器**
:struct tempname ;
typedef tempname typename4;
於是你只好
struct tempname ;
typedef tempname typename4;
如果你想簡單點
,那就人為的改變他的定義順序
typedef struct tempname typename4;
struct tempname ;
關於Union和Struct對齊
關於union,struct,還有機器數賦值,總是感覺自己認識不是特別深刻,這裡使用小demo程式加以說明,具體的詳細細節描述其它地方已經有說明和記錄,這裡不再說明。include union myun u int k a int main output size is 12 0 5 6 說明 in...
關於struct和class的知識
在c 中,struct可以同class一樣擁有自己的成員,只不過struct成員的預設訪問的是public範圍。如果在struct中定義了建構函式,則預設建構函式 無參建構函式 必須顯式定義才能使用 隱式構造方法是編譯器自動給出的,顯式構造方法是程式設計師自己定義的 否則,在建立此結構體的例項的時候...
struct和typedef struct的區別
1 在c中定義乙個結構體型別要用typedef typedef struct student stu 於是在宣告變數的時候就可 stu stu1 如果沒有typedef就必須用struct student stu1 來宣告 這裡的stu實際上就是struct student的別名。stu struc...