C++中typedef與const、指針

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。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章