|
我們知道const關(guān)鍵字是用來(lái)修飾變量的,它修飾的變量在程序運(yùn)行的過(guò)程中不能發(fā)生改變,即不能進(jìn)行二次賦值。那么當(dāng)出現(xiàn)以下情況:
1、const int *p;
2、int const *p;
3、int * const p;
在這三句話(huà)中,總共有兩個(gè)變量,分別是指針指向的整型數(shù)據(jù)和指針。如果修飾的是整型數(shù)據(jù),那么*p即指針指向?qū)ο蟮膬?nèi)容不能發(fā)生改變;如果是指針的話(huà),那么p即指針指向的對(duì)象不能發(fā)生改變。讓人不禁流汗,const關(guān)鍵字,你還知道你在和誰(shuí)貼貼嘛。
接下來(lái),便讓福爾摩斯.小李,為你揭曉“渣男”,const關(guān)鍵字的真正(修飾)對(duì)象。
一、種子選手1號(hào):const int *p;
3.jpg (24.63 KB, 下載次數(shù): 48)
下載附件
2022-8-23 09:20 上傳
經(jīng)過(guò)一番試探,可以很明顯的看到,在這種情況下,它修飾的是指針指向的整型數(shù)據(jù),而不是指針。因?yàn)橹羔樃淖冎赶驔](méi)有報(bào)錯(cuò),反而當(dāng)我改變指向?qū)ο蟮膬?nèi)容的時(shí)候,系統(tǒng)表示*p只處于只讀狀態(tài),即const關(guān)鍵字當(dāng)前修飾的是整型數(shù)據(jù)(指向?qū)ο蟮膬?nèi)容)。
二、種子選手二號(hào):int const *p
4.jpg (22.09 KB, 下載次數(shù): 55)
下載附件
2022-8-23 09:20 上傳
通過(guò)編譯可以看到,它和const int *p修飾的對(duì)象是一樣的,也是整型數(shù)據(jù),即指向?qū)ο蟮膬?nèi)容不能發(fā)生改變。
三、種子選手三號(hào):int * const p;
5.jpg (22.26 KB, 下載次數(shù): 54)
下載附件
2022-8-23 09:21 上傳
通過(guò)編譯我們可以看到,此時(shí)const修飾的變量是指針,指針在運(yùn)行的過(guò)程中指向的對(duì)象不能發(fā)生改變。
總結(jié)一下,const關(guān)鍵字只有在和指針貼貼的最近的時(shí)候,修飾的對(duì)象才是指針,在其余情況下修飾的都是指針指向的內(nèi)容。
|
|