指向變量的常指針與指向常變量的指針詳細(xì)解析
常(量)指針
常指針就是我們說(shuō)的指向常量的指針,顧名思義,它是用來(lái)指向常量的。
用常指針指向常變量
實(shí)際上,C++規(guī)定只能用指向常變量的指針指向常變量,普通指針指向它就會(huì)報(bào)錯(cuò),原因也很容易理解,我們用普通指針指向常變量之后,有可能就會(huì)進(jìn)行改變常變量數(shù)值的操作,這樣做是不被允許的。
常指針的定義方法:
const 類(lèi)型名 * 常指針名;
下面是它的一個(gè)簡(jiǎn)單的使用示例:
程序1.1.1
#include<iostream>
using namespace std;
int main()
{
const int i=5;//定義一個(gè)int型常變量
const int *p;//定義一個(gè)int型常指針
p=&i;//用常指針指向常變量
cout<<*p<<endl;
return 0;
}
運(yùn)行結(jié)果:

如果我們使用普通指針變量來(lái)指向常變量:
程序1.1.2
#include<iostream>
using namespace std;
int main()
{
const int i=5;//定義一個(gè)常變量
int *p;//定義了一個(gè)int型指針
p=&i;//使用一般的指針指向常變量
cout<<*p<<endl;
return 0;
}
就會(huì)報(bào)錯(cuò):

用常指針指向一般變量(非const型變量)
用常指針也是可以指向一般變量的,不過(guò)不可以通過(guò)常指針來(lái)更改一般變量的值,但是可以通過(guò)一般變量的變量名來(lái)修改變量的值。
下面看一個(gè)示例:
程序1.2.1
#include<iostream>
using namespace std;
int main()
{
int i=5;//定義一個(gè)一般變量
const int *p;//定義了一個(gè)常指針
p=&i;//使用常指針指向一般變量
cout<<*p<<endl;
i=10;//通過(guò)一般變量的變量名來(lái)修改值
cout<<*p<<endl;
return 0;
}
運(yùn)行結(jié)果:
如果我們使用常指針來(lái)修改一般變量的值:
*p=10;
就會(huì)報(bào)錯(cuò):

小結(jié):常指針可以指向常變量和一般變量,但是都不能通過(guò)指針改變它指向的變量的值。
指針常量
指針常量是指的指針本身就是一個(gè)常變量,一經(jīng)賦初值就不可以被更改。
上面已經(jīng)說(shuō)過(guò),只有常指針才可以指向常變量,所以指針常量只可以指向一般變量,而且一旦賦給了初值,就不可以再更改。
定義方法:
類(lèi)型名 * const 指針常量名=變量地址;
因?yàn)橹羔樖浅W兞克运诙x的時(shí)候就應(yīng)該賦初值。
一個(gè)程序示例:
程序2.1
#include<iostream>
using namespace std;
int main()
{
int i=5;//定義一個(gè)一般變量
int * const p=&i;//定義了一個(gè)指針常量
cout<<*p<<endl;
*p=30;//通過(guò)指針來(lái)改變指向的變量的值
cout<<*p<<endl;
return 0;
}
運(yùn)行結(jié)果:
相關(guān)文章
C++中棧結(jié)構(gòu)建立與操作詳細(xì)解析
我們可以把棧理解成一個(gè)大倉(cāng)庫(kù),放在倉(cāng)庫(kù)門(mén)口(棧頂)的貨物會(huì)優(yōu)先被取出,然后再取出里面的貨物。而從數(shù)據(jù)的邏輯結(jié)構(gòu)來(lái)看,棧結(jié)構(gòu)起始就是一種線性結(jié)構(gòu)2013-10-10
C++實(shí)現(xiàn)循環(huán)隊(duì)列和鏈?zhǔn)疥?duì)列的示例
下面小編就為大家分享一篇C++實(shí)現(xiàn)循環(huán)隊(duì)列和鏈?zhǔn)疥?duì)列的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-12-12
C++使用宏函數(shù)實(shí)現(xiàn)單例模板詳解
在我們?nèi)粘i_(kāi)發(fā)中,無(wú)可避免需要使用單例模式進(jìn)行設(shè)計(jì)類(lèi)對(duì)象。這篇文章主要介紹了如何使用宏函數(shù)實(shí)現(xiàn)單例模板,感興趣的小伙伴可以了解一下2023-02-02
C語(yǔ)言詳細(xì)分析常見(jiàn)字符串函數(shù)與模擬實(shí)現(xiàn)
字符串函數(shù)(String?processing?function)也叫字符串處理函數(shù),指的是編程語(yǔ)言中用來(lái)進(jìn)行字符串處理的函數(shù),如C,pascal,Visual以及LotusScript中進(jìn)行字符串拷貝,計(jì)算長(zhǎng)度,字符查找等的函數(shù)2022-03-03

