typedef用法詳解

2021-09-26 05:51:31 字數 1216 閱讀 6206

第一:四個用途

用途一:

定義一種型別的別名,而不只是簡單的巨集替換。可以用作同時宣告指標型的多個物件。比如:char* pa,pb;//不符合定義兩個指標的意圖,只是宣告乙個指向字元變數的指標和乙個字元變數

但是以下則可行:

typedef char* pchar;

pchar pa,pb;//同時宣告兩個指向字元變數的指標

用途二:

簡寫**形式

用途三:

為複雜的宣告定義乙個新的簡單的別名。方法是在原來宣告裡逐步用別名替換一部分複雜的宣告,如此迴圈,把帶變數名的部分留到最後替換。

1.原宣告: int*(*a[5])(int,char*);

變數名為a,直接用乙個新別名pfunc替換a;

typedef int *(*pfunc)(int,char);

原宣告的最簡化版

pfunc a[5];

2.原宣告:void (*b[10])(void(*)())

變數名為b,先替換右邊部分括號裡,pfuncparam為別名一:

typedef void (*pfuncparam)();

再替換左邊的變數b,pfunc為別名二:

typedef void(pfunc)(pfuncparam);

最簡化版:

pfunc b[10];

3.原宣告:double()()(*e)[9];

變數名為e,先替換左邊部分,pfunc為別名一:

typedef double(*pfunc)();

再替換右邊的變數e,pfuncparam為別名二:

typedef pfunc (*pfuncparam)[9];

最簡化版:

pfuncparam e;

由此推出:

type ()(…) 函式指標

type () 陣列指標

兩大陷阱

陷阱一:

typedef不是簡單的字元替換

例如:typedef char* pstr

const pstr實際上相當於char* const

陷阱二:

typedef在語法上是乙個儲存類的關鍵字(如auto、extern、mutable、static、register等一樣),雖然它並不真正影響物件的儲存特性,如:

typedef static int int2; //不可行

編譯將失敗,會提示「指定了乙個以上的儲存類」。

typedef用法詳解

用途一 定義一種型別的別名,而不只是簡單的巨集替換。可以用作同時宣告指標型的多個物件。比如 char pa,pb 這多數不符合我們的意圖,它只宣告了乙個指向字元變數的指標,和乙個字元變數 以下則可行 typedef char pchar 一般用大寫 pchar pa,pb 可行,同時宣告了兩個指向字...

typedef用法詳解

typedef作為型別定義關鍵字,用於在原有資料型別 包括基本型別 構造型別和指標等 的基礎上,由使用者自定義新的型別名稱。在程式設計中使用typedef的好處,除了為變數取乙個簡單易記且意義明確的新名稱之外,還可以簡化一些比較複雜的型別宣告。比如 typedef int int32 將int32定...

typedef用法詳解

用途一 定義一種型別的別名,而不只是簡單的巨集替換。可以用作同時宣告指標型的多個物件。比如 char pa,pb 這多數不符合我們的意圖,它只宣告了乙個指向字元變數的指標,和乙個字元變數 以下則可行 typedef char pchar pchar pa,pb 這種用法很有用,特別是char pa,...