【C++學習筆記】關於const int* 、 int const * 、 int* const

const int*、int const*、 int* const的關鍵點在於const 與* 的位置,而const 與類型 int的位置無關,可以隨意調換,屬於個人代碼風格,不過建議寫成 const int *,方便 直觀。
const int*與 int * const 的區別在於 const 修飾的是int* 還是 變量,其中 const int* a 修飾的是int* ,表示這個指針指向的內存區域是常量,不可以修改值,與 const int a 相同,都是不可以改變內存內的值,int* const a 修飾的是變量a,表示變量a的存儲的值(指向內存的地址)不可以改變,但是可以改變指向地址的值。
例如:

int m=5,n=10;//定義了兩個變量 m  n 
int* a=&m;//a 是一個指針變量,指向了m的地址,即m存的是5,a存的是m的地址,常規操作中我們可以修改m的值,也可以修改a的值
//如下L:
m=15;//直接修改m的值爲15,執行後,m是15,*a也是15;
*a=20;//通過指針a修改m的值,執行後,m是20,*a也是20;
a=&n;//直接修改a的值爲n的地址,此時*a是10;

const int* b=&m;//b 是一個指針變量,指向m的地址。


*a=20;//這段代碼會報錯,因爲修飾的是指針,表示指針指向的地址的值不可以改變,與 const int c=5;相同點是都是不能修改c的值,不同點是c的值一直不能改,但*a的值可以通過m=20來改變,執行以後,*a也變成了20。 *a不能改,但m能改


a=&n;//雖然const 約束了指針,但是沒有約束指針變量,所以可以修改指針變量的值。即:改變指針變量指向的地址。
int* const b=&m;//b是一個常量地址,指向了m的地址


*b=&n;//這行代碼會報錯,因爲b是一個常量,它的值就是m的地址,不能改變變量b的值。


*b=30;//可以通過*b修改m的值。此時m也是30;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章