可用三種不同的方式將 const 關鍵字用於一級指針,如下所示: //方式一:指向常量數據的指針,以下幾種為等效表示 const int * ptc; //方式一 int const * ptc; //方式二 //方式二:指針本身為常量,需在聲明時初始化 int x = 55; int * cons ...
可用三種不同的方式將 const
關鍵字用於一級指針,如下所示:
//方式一:指向常量數據的指針,以下幾種為等效表示
const int * ptc; //方式一
int const * ptc; //方式二
//方式二:指針本身為常量,需在聲明時初始化
int x = 55;
int * const cpt = &x;
//方式三:指向常量數據且本身也為常量的指針,需在聲明時初始化,以下幾種為等效表示
int x = 55;
const int * const cptc = &x; //方式一
int const * const cptc = &x; //方式二
在 Microsoft Visual Studio 中連續多個 const
會被編譯器解釋成一個,即 const const const const int
與 const int
等效,除此之外,const int const
在 Microsoft Visual Studio 中也與 const int
等效。
以上三種類型指針的特性如下:
- 類型為
const int *
的指針ptc
表示*ptc
為常量,不能用該指針修改所指對象的值,但可修改其所指向的地址(指針自身的值),可將int
或const int
數據的地址、int *
或const int *
類型的指針、以及int * const
或const int * const
類型的指針賦給ptc
(接受數據或指針修飾為const
或非const
)。 - 類型為
int * const
的指針cpt
表示cpt
為常量,能用該指針修改所指對象的值,但不可修改其所指向的地址(指針自身的值),只能將int
數據的地址 、int *
類型的指針、以及int * const
類型的指針賦給cpt
(只接受數據修飾為非const
),且必須在聲明時初始化。 - 類型為
const int * const
的指針cptc
表示*cptc
和cptc
都為常量,不能用該指針修改所指對象的值,也不可修改其所指向的地址(指針自身的值),和const int *
類型的指針一樣,可將int
或const int
數據的地址、int *
或const int *
類型的指針、以及int * const
或const int * const
類型的指針賦給cptc
(接受數據或指針修飾為const
或非const
),且必須在聲明時初始化。
對於類型為 int *
的常規指針,有以下特性:
- 類型為
int *
的指針pt
表示*pt
和pt
都不為常量,能用該指針修改所指對象的值,也能修改其所指向的地址(指針自身的值),和int * const
類型的指針一樣,只能將int
數據的地址 、int *
類型的指針、以及int * const
類型的指針賦給pt
(只接受數據修飾為非const
)。
各類型一級指針的可修改屬性如下表所示:
指針類型 | 修改 *pt |
修改 pt |
---|---|---|
const int * pt |
不可以 | 可以 |
int * const pt |
可以 | 不可以 |
const int * const pt |
不可以 | 不可以 |
int * pt |
可以 | 可以 |
若將數據的地址賦予一級指針,各類型一級指針可接受的數據地址如下表所示:
指針類型 | int 地址 |
const int 地址 |
---|---|---|
const int * pt |
可以 | 可以 |
int * const pt |
聲明時可以 | 不可以 |
const int * const pt |
聲明時可以 | 聲明時可以 |
int * pt |
可以 | 不可以 |
若將一級指針的值賦予一級指針,各類型一級指針可接受的一級指針值如下表所示:
指針類型 | const int * 值 |
int * const 值 |
const int * const 值 |
int * 值 |
---|---|---|---|---|
const int * pt |
可以 | 可以 | 可以 | 可以 |
int * const pt |
不可以 | 聲明時可以 | 不可以 | 聲明時可以 |
const int * const pt |
可以 | 可以 | 可以 | 可以 |
int * pt |
不可以 | 聲明時可以 | 不可以 | 聲明時可以 |
本文作者:木三百川
本文鏈接:https://www.cnblogs.com/young520/p/16690788.html
版權聲明:本文系博主原創文章,著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請附上出處鏈接。遵循 署名-非商業性使用-相同方式共用 4.0 國際版 (CC BY-NC-SA 4.0) 版權協議。