C語(yǔ)言關(guān)鍵字const和指針的結(jié)合使用
我們先定義三個(gè)變量
1、const int *p1
2、int const *p2
3、int *const p3
p1、p2、p3這三個(gè)指針都是指向int類(lèi)型的,那它們有什么區(qū)別呢
寫(xiě)個(gè)代碼測(cè)試一下

編譯一下

可看到第11,12,16行報(bào)錯(cuò),從中可得出以下結(jié)論:
const int * 與 int const *是一樣的效果,指向的內(nèi)存是不能改變的,即指針指向的內(nèi)容是只讀的,或者說(shuō)是一個(gè)常量。不過(guò)指向的位置是可以更改的,即p1和p2可以重新指向別的常量。
而char *const 剛好相反,表示指針的內(nèi)容是只讀的,即指針指向的位置是不可修改的,但是指針指向的內(nèi)存是可讀可寫(xiě)的。
如果指向的內(nèi)存和位置都是不能改的呢?
哈哈哈,肯定都能想到,
int *const const pointer 與 const int *const pointer 都是可以的。
那如果const和typedef一起用會(huì)怎么樣?
//先定義個(gè)新類(lèi)型 typedef int *intp; const intp p1; intp const p2;
p1和p2,哪個(gè)指向的位置不能變,哪個(gè)指向的內(nèi)存不能變呢?
答案是:p1和p2是一樣的,都是指向的位置不能變,即如果指向了a,就不能再指向b。
所以如果想指向的內(nèi)容不能變,就不能用typedef來(lái)定義新類(lèi)型了。
下面是驗(yàn)證代碼和編譯結(jié)果


總結(jié)
以上所述是小編給大家介紹的C語(yǔ)言關(guān)鍵字const和指針的結(jié)合使用,希望對(duì)大家有所幫助!
相關(guān)文章
數(shù)據(jù)結(jié)構(gòu)順序表操作示例
這篇文章主要介紹了數(shù)據(jù)結(jié)構(gòu)順序表操作示例,其中有在第I個(gè)元素前插入數(shù)據(jù)x,元素從0開(kāi)始計(jì)數(shù)、刪除第i個(gè)元素,元素從0開(kāi)始計(jì)數(shù)的方法,需要的朋友可以參考下2014-03-03
C語(yǔ)言數(shù)據(jù)在內(nèi)存中的存儲(chǔ)詳解
本篇文章是C語(yǔ)言編程篇,主要為大家介紹C語(yǔ)言編程中數(shù)據(jù)在內(nèi)存中存儲(chǔ)解析,有需要的朋友可以借鑒參考下,希望可以有所幫助2021-09-09
C語(yǔ)言實(shí)現(xiàn)十進(jìn)制轉(zhuǎn)任意進(jìn)制的代碼詳解
這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)十進(jìn)制轉(zhuǎn)任意進(jìn)制,運(yùn)用一個(gè)數(shù)組,通過(guò)數(shù)字每次取任意進(jìn)制模,存在數(shù)組中, 再通過(guò)倒取數(shù)組中的數(shù)值,來(lái)實(shí)現(xiàn)進(jìn)制轉(zhuǎn)換,如果遇到十六進(jìn)制,利用ASCII碼值 數(shù)字字符和大寫(xiě)字母 相差55的特性來(lái)解決,文中有詳細(xì)代碼示例,需要的朋友可以參考下2024-05-05
利用Matlab制作一款刮刮樂(lè)抽獎(jiǎng)特效
七夕節(jié)還不知道送啥,教你用MATLAB制作一款刮刮樂(lè)抽獎(jiǎng)特效,讓她的手氣決定她的禮物。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-03-03
C++中對(duì)C語(yǔ)言結(jié)構(gòu)體用法的擴(kuò)充
今天小編就為大家分享一篇關(guān)于C++中對(duì)C語(yǔ)言結(jié)構(gòu)體用法的擴(kuò)充,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12
C語(yǔ)言修煉之路初識(shí)分支句?循環(huán)助本心上篇
現(xiàn)實(shí)生活中我們經(jīng)常需要根據(jù)不同的條件做出不同的選擇。程序設(shè)計(jì)中也需要根據(jù)條件來(lái)選擇不同的程序進(jìn)行處理,這稱(chēng)之為分支結(jié)構(gòu),當(dāng)條件表達(dá)式不存在時(shí),它被假設(shè)為真。您也可以設(shè)置一個(gè)初始值和增量表達(dá)式,一般情況下,C?程序員偏向于使用?for(;;)?結(jié)構(gòu)來(lái)表示一個(gè)無(wú)限循環(huán)2022-03-03

