必須說明的一點:const
修飾符只影響其右邊的**。
int num = 1;
int * const ptr = #
const
右面只有ptr
乙個成員,所以只對ptr
起作用,只有ptr
乙個人是唯讀的不可改變,和其他成員沒關係。
ptr++; //error
*ptr = 2; //ok
num = 3; //certainly ok
這就印證了開頭說的「const
修飾符只影響其右邊的**」。
指標常量的意思是指標變數ptr
只能儲存num
的位址,只能指向變數num
,二者之間關係永久,矢志不渝。
int num = 1;
const int * ptr = #
const
後面是* ptr
,那麼只有*ptr
是唯讀的,而其他成員num
、ptr
不受影響。
*ptr = 2;//error
ptr++; //ok
num = 3; //certainly ok
這也印證了「const
修飾符只影響其右邊的**」。
常量指標的意思是不能通過ptr
修改num
的值,僅此而已。ptr
可以指向其他變數。
此外,const int * ptr = &num
和int const * ptr = &num
是完全等效的,畢竟const
和int
沒什麼瓜葛,const
無論怎麼用都是在對後面的* ptr
起作用。
根據「const
修飾符只影響其右邊的**」這一原則,我們既想讓ptr
永遠指向num
,又不想通過ptr
改變num
的值,我們可以這樣寫:
const int * const ptr = #
其中第乙個const
對*ptr
起作用,第二個const
對ptr
起作用,這樣就形成了指向常量的指標常量。 指標 常量指標和指標常量
const關鍵字宣告乙個常量,常量宣告後不能修改。類似的,我們可以宣告常量指標 double radius 5 double const pvalue radius pvalue 4 可以修改其中pvalue是乙個常量指標,其宣告和初始化必須在同一條語句中,後面的程式不能為其賦予新的位址。注意,雖然...
常量指標 和 指標常量
在c 的學習中,有人經常搞不清楚 常量指標 和 指標常量 這兩個概念。其實簡單一點講,常量指標 所指向的位址上的資料是常量,而 指標常量 所指向的位址是常量,位址上面的資料是可以變化的。常量指標,表述為 是常量的指標 它首先應該是乙個指標。指標常量,表述為 是指標的常量 它首先應該是乙個常量。指標常...
常量指標和指標常量
定義 具有只能夠讀取記憶體中資料,卻不能夠修改記憶體中資料的屬性的指標,稱為指向常量的指標,簡稱常量指標。宣告 const int p int const p 注 可以將乙個常量的位址賦值給乙個對應型別的常量指標,因為常量指標不能夠通過指標修改內粗資料。只能防止通過指標引用修改記憶體中的資料,並不保...