面向C/C++新手】typedef的用法

也許新手用這個關鍵字不多,但它卻是一個很有用的關鍵字,可以使代碼模塊化程度更好(即與其它代碼的關聯較少),在C++中還是實現Traits技術的基礎,也是模板編程的基本語法之一。

若說變量定義是爲變量命名,而typedef(或稱爲類型定義)就是爲類型命名。既然都是命名,那就會有很多類似的地方。而變量定義我想大家都會使用,因此類型定義也必然會使用。

類型定義的語法可以歸結爲一句話:只要在變量定義前面加上typedef,就成了類型定義。這兒的原本應該是變量的東西,就成爲了類型。

如,下面的變量定義:

int integer;     //整型變量
int *pointer;   //整型指針變量
int array [5]; //整型數組變量
int *p_array [5]; //整型指針的數組的變量
int (*array_pointer) [5];//整型數組的指針的變量
int function (int param);//函數定義,也可將函數名看作函數的變量
int *function (int param);//仍然是函數,但返回值是整型指針
int (*function) (int param);//現在就是指向函數的指針了

若要定義相應類型,即爲類型來起名字,就是下面的形式:

typedef int integer_t;                      //整型類型
typedef int *pointer_t;     //整型指針類型
typedef int array_t [5]; //整型數組類型
typedef int *p_array_t [5];    //整型指針的數組的類型
typedef int (*array_pointer_t) [5]; //整型數組的指針的類型
typedef int function_t (int param);     //函數類型
typedef int *function_t (int param);    //函數類型
typedef int (*function_t) (int param); //指向函數的指針的類型

注意,上面的函數類型在C中可能會出錯,因爲C中並沒有函數類型,它的函數變量會自動退化成函數指針;在C++中好像是可以的。在這裏主要說明的是形式上的相似性.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章