關於typdef和struct的混和定義式

2021-04-01 03:25:57 字數 1252 閱讀 9425

由於網友的多次提問

.並且沒有個完整的回答

.這裡給出總結

,遺漏的話大家補充.首先

,必須明白的是

,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...