剛接觸到指標時,關於指向變數的常指標和指向常變數的指標容易混淆,所以整理下,希望能夠幫助自己也幫助到大家。
常指標就是我們說的指向常量的指標,顧名思義,它是用來指向常量的。
實際上,c++規定只能用指向常變數的指標指向常變數,普通指標指向它就會報錯,原因也很容易理解,我們用普通指標指向常變數之後,有可能就會進行改變常變數數值的操作,這樣做是不被允許的。
常指標的定義方法:
const 型別名 * 常指標名;
型別名 const * 常指標名;下面是它的乙個簡單的使用示例:
程式1.1.1
#includeusing namespace std;就會報錯:int main()
{ const int i=5;//定義乙個int型常變數
const int *p;//定義乙個int型常指標
p=&i;//用常指標指向常變數
cout<
如果我們使用普通指標變數來指向常變數:
程式1.1.2
#includeusing namespace std;
int main()
{ const int i=5;//定義乙個常變數
int *p;//定義了乙個int型指標
p=&i;//使用一般的指標指向常變數
cout<
用常指標也是可以指向一般變數的,不過不可以通過常指標來更改一般變數的值,但是可以通過一般變數的變數名來修改變數的值。
下面看乙個示例:
程式1.2.1
#includeusing namespace std;
int main()
{ int i=5;//定義乙個一般變數
const int *p;//定義了乙個常指標
p=&i;//使用常指標指向一般變數
cout<
如果我們使用常指標來修改一般變數的值:
*p=10;
小結:常指標可以指向常變數和一般變數,但是都不能通過指標改變它指向的變數的值。
指標常量是指的指標本身就是乙個常變數,一經賦初值就不可以被更改。
上面已經說過,只有常指標才可以指向常變數,所以指標常量只可以指向一般變數,而且一旦賦給了初值,就不可以再更改。
定義方法:
型別名 * const 指標常量名=變數位址;因為指標是常變數所以它在定義的時候就應該賦初值。
乙個程式示例:
程式2.1
#includeusing namespace std;int main()
{ int i=5;//定義乙個一般變數
int * const p=&i;//定義了乙個指標常量
cout<
每乙個指標都涉及兩個物件,乙個是該指標本身,乙個是該指標指向的物件。
指向常變數的指標
定義方法:
const 型別名 * 常指標名;
型別名 const * 常指標名;含義:指標是變數,是可以變化的,可以再指向其他的變數。但是,指標指向的資料不可以改變,相當於常變數。
指向變數的常指標
定義方法:
型別名 * const 指標常量名=變數位址;含義:指標是常變數,即指標本社不可以改變,常指標在定義的時候就必須初始化。一旦初始化,就不可以更改指標的值,不可以再指向其他變數。常指標可以指向普通變數,也可以指向常變數。
const出現在*前面,則是指向常量的指標;const出現在*後面,則是指向變數的常指標
指向變數的常指標與指向常變數的指標變數的區別
一 指向變數的常指標 形式 型別名 const 指標變數名 將指標變數宣告為const型,這樣指標變數始終保持為初值,不能改變,即其指向不能改變 例 include include int main 常指標pcpt已經指向了cbuff1,就不能再指向cbuff2了。注意 雖然常指標只能始終指向同乙個...
指向物件的常指標變數與指向常物件的指標變數區別
time const p 指向物件的常指標變數 p 的值 p的指向 不能修改 const time p 指向常物件的指標變數,p 指向的類物件的值不能通過p來修改 將指標變數宣告為const型,這樣指標變數始終保持初值,不能改變,即其所指向不變。timet1 10,12,15 t2 time con...
指向常物件的指標變數
首先了解指向常變數的指標變數,然後再進一步研究指向常物件的指標變數。定義乙個指向常變數的指標變數ptr const char ptr 定義指向常變數的指標變數的一般形式為 const 型別名 指標變數名 注意 a如果乙個變數已被宣告為常變數,只能用指向常變數的指標變數指向它,而不能用一般的 指向非c...