標(biāo)題: C語言:const關(guān)鍵字-我要和變量貼貼 [打印本頁]

作者: XYDDD    時(shí)間: 2022-8-23 09:22
標(biāo)題: C語言:const關(guān)鍵字-我要和變量貼貼
我們知道const關(guān)鍵字是用來修飾變量的,它修飾的變量在程序運(yùn)行的過程中不能發(fā)生改變,即不能進(jìn)行二次賦值。那么當(dāng)出現(xiàn)以下情況:
1、const int *p;
2、int const *p;
3、int * const p;
在這三句話中,總共有兩個(gè)變量,分別是指針指向的整型數(shù)據(jù)和指針。如果修飾的是整型數(shù)據(jù),那么*p即指針指向?qū)ο蟮膬?nèi)容不能發(fā)生改變;如果是指針的話,那么p即指針指向的對象不能發(fā)生改變。讓人不禁流汗,const關(guān)鍵字,你還知道你在和誰貼貼嘛。


接下來,便讓福爾摩斯.小李,為你揭曉“渣男”,const關(guān)鍵字的真正(修飾)對象。

一、種子選手1號:const int *p;


經(jīng)過一番試探,可以很明顯的看到,在這種情況下,它修飾的是指針指向的整型數(shù)據(jù),而不是指針。因?yàn)橹羔樃淖冎赶驔]有報(bào)錯(cuò),反而當(dāng)我改變指向?qū)ο蟮膬?nèi)容的時(shí)候,系統(tǒng)表示*p只處于只讀狀態(tài),即const關(guān)鍵字當(dāng)前修飾的是整型數(shù)據(jù)(指向?qū)ο蟮膬?nèi)容)。

二、種子選手二號:int const *p


通過編譯可以看到,它和const int *p修飾的對象是一樣的,也是整型數(shù)據(jù),即指向?qū)ο蟮膬?nèi)容不能發(fā)生改變。

三、種子選手三號:int * const p;


通過編譯我們可以看到,此時(shí)const修飾的變量是指針,指針在運(yùn)行的過程中指向的對象不能發(fā)生改變。

總結(jié)一下,const關(guān)鍵字只有在和指針貼貼的最近的時(shí)候,修飾的對象才是指針,在其余情況下修飾的都是指針指向的內(nèi)容。





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1