這裡不去區分中文到底誰是指標常量與常量指標,因為記住也沒啥用。
按照從左至右的順序記憶,按照從右至左的順序理解。
參考《effective c++》item21上的做法,如果const位於星號的左側,則const就是用來修飾指標所指向的變數,即指標指向為常量;如果const位於星號的右側,const就是修飾指標本身,即指標本身是常量。
記憶
只關注【const】 和 【*】 的先後順序,從做到右的順序讀就行,const讀做常量,*讀做指標。
const
int* p;
//常量指標
int*
const p;
//指標常量
intconst
* p;
//常量指標
理解
const
int* p;
// 指標p 指向乙個const
int*
const p;
// 指標常量p 指向乙個 int
intconst
* p;
// 指標p指向乙個const
int age =
18;const
int*ptr =
&age;
這裡的意思是:ptr指向乙個const int,也就是說不能通過ptr去修改age這個值,換句話說就是ptr的值是
const* 不能修改。
*ptr+
=1;//是錯誤的
重點來了:ptr的宣告並不意味著他指向的值實際是乙個常量值,也就是說age只是乙個整型變數而已,可以直接通過age = 19來修改age的值。這裡只是相對於ptr而言,age是常量,不能通過ptr去修改age的值。
int anotherage =30;
*ptr =20;
//錯誤,不能通過該指標修改其指向的值
age =20;
//正確
ptr =
&anotherage;
//正確,可以指向其他的位址
3.指標常量
可以修改指標指向的值,但是禁止改變指向的變數
int sage =20;
int hapi =30;
int*
const pt =
&sage;
*pt =29;
//正確
pt =
&hapi;
//錯誤
指標常量與常量指標
指標常量與常量指標 指標常量是指定義的指標只能在定義的時候初始化,之後不能改變其值,格式如下 資料型別 const 指標常量名稱 例項如下 1char constp1 2int constp2 const 位於指標宣告符 的右側,這說明宣告的物件是乙個常量,而物件的資料型別是指標。所以第一句定義了乙...
常量指標與指標常量
首先,我告訴大家乙個小規則,就是像這樣連著的兩個詞,前面的乙個通常是修飾部分,中心詞是後面乙個詞,怎麼說呢。就像這裡的常量指標和指標常量。常量指標,表述為 是常量的指標 它首先應該是乙個指標。指標常量,表述為 是指標的常量 它首先應該是乙個常量。我再分開細細說明,常量指標,它是乙個指標,什麼樣的指標...
常量指標與指標常量
在c c 面試中經常會考到常量指標和指標常量,對初學者來說經常會分不清楚,參考網路上的資料,重新學習 記錄一下。常量指標 指向常量的指標,即指向的內容為常量,不可更改,但指標自身的值可以修改。常量指標常量 指標指向的內容不可改變,指標本身的值也不能改變。int a 3 int b 4 const i...