C++之const限定符詳解
const限定符:把變量定義成一個(gè)常量
1.使用const對(duì)變量的類型加以限定,變量的值不能被改變
const int bufSize=512;//輸入緩沖區(qū)大小 bufSize=512;//錯(cuò)誤 因?yàn)橛械忍?hào)試圖向const對(duì)象寫值
2.const對(duì)象必須初始化(其他時(shí)候不能出現(xiàn)在等號(hào)左邊)
const int i=get_size();//正確 運(yùn)行時(shí)初始化 const int j=33;//正確 編譯時(shí)初始化 const int k;//錯(cuò)誤 沒(méi)有初始化 const int bb=0; void *a=bb;//正確 在編譯的時(shí)候 會(huì)把bb編譯為常量0 const類型編譯時(shí)按照常量處理
3.默認(rèn)情況下const對(duì)象僅在文件內(nèi)有效 想在多個(gè)文件內(nèi)共享const對(duì)象 必須在變量定義之前加extern關(guān)鍵字
extern const int bufSize=fcn();
4.const的引用:對(duì)常量的引用
const int ci=1024; const int&r1=ci;//正確 引用及其綁定的對(duì)象都是常量 r1=42;//錯(cuò)誤 試圖修改常量 int &r2=ci;//錯(cuò)誤 存在改變const的風(fēng)險(xiǎn) int i=33; const int&r1=i;//正確 不可以通過(guò)r1對(duì)i進(jìn)行修改 i依然可以通過(guò)其他途徑修改 const int&r2=33;//正確 const int&r3=r1*2;//正確 此處 int &r3=r1*2;//錯(cuò)誤 不能用非常量引用指向一個(gè)常量
5.指針和const
指向常量的指針
const doublenpi=3.14; double *ptr=π//錯(cuò)誤 const double *cptr=π *cptr=3;//錯(cuò)誤 double dval=3.14; cptr=&dval;//正確 但不能通過(guò)cptr修改dval的值
const指針:指針是對(duì)象,也可以限定為常量(必須初始化)
把*放在const之前,說(shuō)明指針是一個(gè)常量,不變的是指針本身的值而非指向的那個(gè)值
int errNumb=0; int *const curErr=&errNumb; const double pi=3.14159; const double *const pip=π//指向常量的常量指針 *pip=2.71;//錯(cuò)誤 試圖修改常量pip if(*cureRR){ errorHandler(); *curErr=0;//正確 試圖修改變量erNumb }
總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
c語(yǔ)言基于stdarg.h的可變參數(shù)函數(shù)的用法
本篇文章主要介紹了c語(yǔ)言基于stdarg.h的可變參數(shù)函數(shù)的用法,詳細(xì)的介紹了可變參數(shù)函數(shù)的詳細(xì)用法和源碼實(shí)例,有興趣的可以了解一下2017-07-07C++11運(yùn)算符重載和向量類重載實(shí)例詳解(<<,>>,+,-,*等)
這篇文章主要給大家介紹了關(guān)于C++11運(yùn)算符重載和向量類重載的相關(guān)資料,主要包括<<,>>,+,-,*等,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-07-07C語(yǔ)言實(shí)現(xiàn)酒店管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)酒店管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06Qt自定義控件實(shí)現(xiàn)圓盤進(jìn)度條
這篇文章主要為大家詳細(xì)介紹了Qt自定義控件實(shí)現(xiàn)圓盤進(jìn)度條,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12C++ Boost Chrono實(shí)現(xiàn)計(jì)時(shí)碼表流程詳解
Boost是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱。Boost庫(kù)是一個(gè)可移植、提供源代碼的C++庫(kù),作為標(biāo)準(zhǔn)庫(kù)的后備,是C++標(biāo)準(zhǔn)化進(jìn)程的開(kāi)發(fā)引擎之一,是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱2022-11-11