1 typedef的用法
在C++中,typedef關鍵字用來定義類型的別名。
typedef double wages;
此時,wages是double的別名,可以將wages作爲數據類型來定義其他變量。
wages mywage;
其中,mywage的類型是double。
2 使用typedef定義指針的別名
使用typedef定義指針的別名的方法與“1 typedef的用法”中提到的方法類似。
typedef int* pint;
int i = 1;
pint mypint = &i;
此時,mypint的類型是int的指針。
3 const來修飾typedef定義指針的別名
typedef int* pint;
const pint mycpint = 0;
其中,mycpint的類型是指向int的指針,mycpint本身是常量,所以需要對其賦初值。以下代碼
const pint mycpint;
會有“mycpint需要初始值設定項”的錯誤提示。
而如下代碼
mycpint = &i;
會有“表達式必須是可修改的左值”的錯誤提示。
從以上分析可以看出,
const pint mycpint = 0;
並不是簡單地將pint替換成int*,即變成如下代碼
const int* mycpint;
以上代碼的含義是mycpint指向const int,其本身是並非是const,而是一個可以修改的變量。
4 typedef定義const int*
使用如下代碼來定義const int*的別名
typedef const int *cpint;
cpint mycpint1;
mycpint1 = &i;
其中,mycpint1的類型是指向const int的指針,其本身並非const,因此可以不用賦初值,並且在隨後的代碼中可以將其賦值爲int的指針&i。
與“3 const來修飾typedef定義指針的別名”中提到的別名區別在於
typedef const int *cpint;
可以看成
(const int) *cpint;
cpint首先是一個指針,該指針指向了一個const int。
const pint mycpint = 0;
可以看成
const (pint) mycpint = 0;
mycpint是一個const指針,該指針類型是pint,即指向char。