Typedef在C和C 中的使用

2021-10-13 20:56:04 字數 1595 閱讀 5825

在c/c++中,使用typedef關鍵字可以給變數起乙個合適的別名,從而有效提高命名的可理解性,變數應用的簡潔性。

typedef最簡單的應用在c的的標頭檔案中,

#

define

__int8_type__

signed

char

#define

__int16_type__

short

int#

define

__int32_type__

int

#

ifdef

__int8_type__

typedef __int8_type__ int8_t;#

endif

#ifdef

__int16_type__

typedef __int16_type__ int16_t;#

endif

#ifdef

__int32_type__

typedef __int32_type__ int32_t;#

endif

這種命名方式在c語言或者嵌入式程式設計的c語言中非常常見,由於不同作業系統,編譯條件下的資料型別佔的位元組數不一定相同,同乙個資料型別在乙個平台下可能佔4個位元組,而在另外乙個平台可能就會佔8個位元組,這嚴重影響了程式執行的正確性。

而使用typedef關鍵字根據資料型別占用的位元組數進行重新命名,然後使用這些「別名」命名變數,可以有效的避免上述問題。

另外乙個使用typdef的情況就是在結構體的命名中,例如我們使用typedef命名乙個學生型別結構體,之後再使用該結構體時不需要使用struct student的形式,而只需要使用student,簡化了程式的書寫。

typedef

struct

student

student;

student stu_daniel;

stu_daniel.name=

"daniel"

; stu_daniel.age=18;

stu_daniel.num=

39;

在c++中,我們不需要使用typedef給struct結構體進行重新命名,因為在struct是c++中預設建立預設成員是public成員的類的關鍵字,所以如果使用了 struct student{};建立了乙個結構體(實際是乙個類),可以直接使用「.」訪問其中的成員(因為其屬性為public的)。

在c++還可以使用using關鍵字起到和typedef相同的效果,基本寫法:

//給usigned int起別名為 uint32t

using uint32t=unsiged int

;

(1)c中可以通過typedef給資料型別起乙個別名,從而更有利於程式的閱讀和對變數的理解;

(2)c++ 的struct關鍵字實質是建立乙個預設成員是public型別的類,所以可以不適用typedef給c++中的struct結構重新命名,就可以直接使用"."運算子訪問其中的成員;

(3)c++中可以使用using關鍵字進行起別名,其用法比typedef更為便捷;

typedef在C和C 中的區別

偶然發現typedef在c和c 中是不一樣的,在c中定義結構體必須要用到typedef,而在c 中定義結構體時用typedef和不用又有不同。在c中,定義結構體是一定要用到typedef的,我們在 中定義乙個簡單的結構體 typedef struct student stu stu stu1 stu...

typedef在C和C 的區別?

一 struct定義結構體 1 先宣告結構體型別再定義變數名 struct name name a 如 struct student student stu1,stu2 若在c語言中定義,應該加上struct struct student stu1,stu2 2 一邊宣告型別同時定義變數 struc...

C和C 中typedef的用法分析

在 之中使用typedef宣告有助於建立與平台無關的型別,隱藏c和c 語言中複雜和難以理解的符合型別,創造更為美觀的 但是typedef的使用卻有一些很容易混淆的地方,簡單的用法還可以,稍微複雜一些的用法我就搞不懂了。在網上搜了一些資料,看了看,自己總結了一下。一 譚浩強版的用typedef定義已有...