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。