指針常量、常量指針和指向常量的常量指針


int *const p:常量指針,其本質是一個常量(用指針修飾),這個常量的內容是一個指針,不可以修改p指向的地址,但是可以修改*p的值。定義的時候要賦初值。(數組名也是一個指針常量)

int const *p(const int *p):指針常量,其本質是一個指針(用const修飾)。說明它指向的對象是一個常量,這個對象不能被更改,可以修改p指向的地址,但是不可以修改*p的值。

const int *const p:指向常量的常量指針,既不可以修改p指向的地址,也不可以修改*p的值。

分辨指針常量和常量指針

在int const *p和int *const p中從右向左讀遇到p以后替換為"p is a",遇到"*"以后將其替換為"point to"。所以int const *p是p is a point to const int(p是指向常量int的指針(指針常量)),int * const p 中p is a const point to int (p是一個指向int的常量指針) 。

const后面的內容為常量

const int p;  // p 為常量,初始化后不可更改

const int* p;  // *p 為常量,不能通過*p改變它指向的內容
int const* p;  // *p 為常量,同上
int* const p;  // p 為常量,初始化后不能再指向其它內容
 

 

 

 

 

 

 

 

總結:指針常量地址只讀,說明指針常量能讀取不同的地址,但是不能修改其指向地址的值。

          常量指針變量只讀,也就是說指針變量只能讀取一個地址,但是可以改變該地址的值。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM