const和*混合使用
常量指標:const *a; 本質上a是乙個指標,常量表示a的指向是乙個常量,所以a的指向不能改變
指標常量:* const a;本質上a是乙個常量,表示是乙個指標型別的常量
簡單的記法就是從左向右讀,const後面跟誰誰不變(但是c++課本上定義的方法是從右往左,具體還需要會使用)
int aa = 10, bb = 20;上面**中,a是乙個常量指標,const緊挨著*,所以*a不能改變,而a的值可以改變,而a的值改變後,就和原來的指向aa沒有關係了。int c = 30, d = 40;
const int *a = &aa; //a是常量指標,所以所以此刻a指向的內容不能改變,但是可以改變a的值
int *const b = &bb; //b是指標常量,此刻b的值不能改變,但是指向的內容可以改變
a = &c; //此時a的位址變為了c,此刻a就是c的指標,而aa的值不變
//*a = *&d; 錯誤,因為是常量指標,所以指向不能改變
*b = d; //此刻*b的指向是d,但是b的位址沒有變,所以此刻就把d的值付給了b,此時b和bb的值都變為了d;此時由符號*得到b所指的物件,然後把d賦值給所指的物件
//b = &c; 錯誤,因為是指標常量,所以b的值不能改變
b是乙個常量指標,const緊挨著b,所以b的值不能改變,而*b可以改變,但是由於位址不變,所以*b指向改變後,b任仍然和bb的位址一樣。
頂層const:類似於常量指標(*const),表示指標本身是乙個常量
底層const:類似於指標常量(const *),表示所指的物件是乙個常量
指標 常量指標和指標常量
const關鍵字宣告乙個常量,常量宣告後不能修改。類似的,我們可以宣告常量指標 double radius 5 double const pvalue radius pvalue 4 可以修改其中pvalue是乙個常量指標,其宣告和初始化必須在同一條語句中,後面的程式不能為其賦予新的位址。注意,雖然...
常量指標 和 指標常量
在c 的學習中,有人經常搞不清楚 常量指標 和 指標常量 這兩個概念。其實簡單一點講,常量指標 所指向的位址上的資料是常量,而 指標常量 所指向的位址是常量,位址上面的資料是可以變化的。常量指標,表述為 是常量的指標 它首先應該是乙個指標。指標常量,表述為 是指標的常量 它首先應該是乙個常量。指標常...
常量指標和指標常量
定義 具有只能夠讀取記憶體中資料,卻不能夠修改記憶體中資料的屬性的指標,稱為指向常量的指標,簡稱常量指標。宣告 const int p int const p 注 可以將乙個常量的位址賦值給乙個對應型別的常量指標,因為常量指標不能夠通過指標修改內粗資料。只能防止通過指標引用修改記憶體中的資料,並不保...