這2個概念很容易混淆,在這裡我貼出自己的理解。
這裡理解的關鍵是:誰離最後的元素最近,那麼它就是誰。
說明:
1.const int* p
,在這裡距離最後的元素p最近的是int*
,int *
是乙個指標,因此const int* p
就是常量指標。
2.int* const p1
,在這裡距離最後的元素p1最近的是const
,const
是乙個常量,因此int* const p1
就是指標常量。
常量指標
const int* p:不能通過指標來改變指標指向的變數的值,但是可以改變指向或者通過原來的宣告改變變數的值。
int a;
const int *p1 = &a;
a = 300; //ok,仍然可以通過原來的宣告修改值,
//*p1 = 56; //error,*p1是const int的,不可修改,即常量指標不可修改其指向位址
p1 = &b; //ok,指標還可以指向別處,因為指標只是個變數,可以隨意指向;
指標常量
int * const p1:不能改變指標的指向,但是可以通過指標改變指標指向的變數的值,也可以通過原來的宣告修改值。
int* const p2 = &a;
a = 500; //ok,仍然可以通過原來的宣告修改值,
*p2 = 400; //ok,指標是常量,指向的位址不可以變化,但是指向的位址所對應的內容可以變化
//p2 = &b; //error,因為p2是const 指標,因此不能改變p2指向的內容
指標 常量指標和指標常量
const關鍵字宣告乙個常量,常量宣告後不能修改。類似的,我們可以宣告常量指標 double radius 5 double const pvalue radius pvalue 4 可以修改其中pvalue是乙個常量指標,其宣告和初始化必須在同一條語句中,後面的程式不能為其賦予新的位址。注意,雖然...
常量指標 和 指標常量
在c 的學習中,有人經常搞不清楚 常量指標 和 指標常量 這兩個概念。其實簡單一點講,常量指標 所指向的位址上的資料是常量,而 指標常量 所指向的位址是常量,位址上面的資料是可以變化的。常量指標,表述為 是常量的指標 它首先應該是乙個指標。指標常量,表述為 是指標的常量 它首先應該是乙個常量。指標常...
常量指標和指標常量
定義 具有只能夠讀取記憶體中資料,卻不能夠修改記憶體中資料的屬性的指標,稱為指向常量的指標,簡稱常量指標。宣告 const int p int const p 注 可以將乙個常量的位址賦值給乙個對應型別的常量指標,因為常量指標不能夠通過指標修改內粗資料。只能防止通過指標引用修改記憶體中的資料,並不保...