C 指向常量的指標 常指標和指向常量的指標

2021-10-01 09:53:36 字數 2204 閱讀 9818

c++的乙個很明顯的特性就是指標。指標正是c++強大的原因,同時也會他比較難的乙個原因。

這裡簡單介紹下c++中指向常量的指標、常指標和指向常量的常指標的概念。

一、指向常量的指標:

定義方法

const

int* ptr;

intconst

*ptr;

那麼什麼是指向常量的指標呢?

簡單來說,就是指標指向的內容是常量,不可變,但是指標本身的值可以變(也就是說指標可以指向同型別的其他常量)。

下面看乙個例子:

const

double pi =

3.14

;// pi是乙個常量,不能改變它的值

const

double

* cptr =

π//cptr指向pi,注意這裡的const不能丟,因為普通指標不能指向常量物件,即,不能用非const變數初始化指向常量的指標.

*cptr =

3.69

;//錯誤,試圖改變所指物件的值。不能改變指標所指物件的值

cout <<

*cptr << endl;

//輸出pi的值

//雖然不能改變其所指物件的值,但是它可以指向別的常量物件

cosnt double pi2 =

6.28

;cptr =

&pi2;

//正確 *cptr為6.28

cout <<

*cptr << endl;

const

char

* ptr =

"hello , world"

;//字串常量的內容不可變

二、常指標:

常指標和上面指向常量的指標相反:該指標不允許指向其他地方,但是它裡面的值可以修改。

定義方法

int

*const ptr;

看下面的例子:

int i =42;

int* cosnt p =

&i; //p是乙個const指標

cosnt int i2 =44;

p =&i2;

//錯誤 不能改變p的值

//雖然不能給p賦值,也就是不能改變p的值,但是我們可以改變p所指的物件的內容。比如:

*p =46;

//正確 此時i為46

三、指向常量的常指標:

這種指標自然是結合上面兩個的特性。

定義方法

const

int*

const ptr;

intconst

*const ptr;

這種指標就不列舉具體例子了,需要用的地方直接使用即可。

那麼要怎樣去記憶呢?

這裡給出一種方法:

從右往左讀,遇到p就替換為「p is a」,遇到*就替換為「point to」,其餘不變

下面看看具體情況

const int* ptr;

ptr is a point to int const_——ptr是指向int型常量的指標(指向常量的指標)

int const* ptr;

ptr is a point to const int——ptr是指向int型常量的指標(指向常量的指標)

int* const ptr;

ptr is a const point to int——ptr是const 型別的指向int型變數的指標(常指標)

const int * const ptr;

ptr is a const point to int const——ptr是const 型別的指向const int型常量的指標(指向常量的常指標)

int const * const ptr;

ptr is a const point to const int ——ptr是指const 型別的指向const int型常量的指標(指向常量的常指標)

怎麼樣,有木有覺得這樣一來的話就不容易混淆了。

指標常量,常指標,指向常量的常指標

1.指標常量 從字面意思可以看出,指標是乙個常量,也就是位址不能被修改。int const p 特點是指標指向的數值可以改變,然而指標所儲存的位址卻不可以改變。include using namespace std void main int a 10 int const p a cout 我們可以...

指標常量,常指標,指向常量的常指標

1.指標常量 從字面意思可以看出,指標是乙個常量,也就是位址不能被修改。int const p 特點是指標指向的數值可以改變,然而指標所儲存的位址卻不可以改變。include using namespace std void main int a 10 int const p a cout 我們可以...

常指標 指向常量的指標與指向常量的常指標的區分

個人根據一些資料,簡要總結如下 include using namespace std int main 補充 1 constexpr變數簡介 在c 11新標準規定,允許將變數宣告為constexpr型別以便由編譯器來驗證變數的值是否是乙個常量表示式。宣告為constexpr的變數一定是乙個常量,而...