C中的const關(guān)鍵字

const是C語(yǔ)言中保留的一個(gè)關(guān)鍵字侄旬,表示變量是只讀的肺蔚,即不可改變的常量。

(1)用const修飾一般變量(C語(yǔ)言一般使用#define宏定義常量)

注意在C語(yǔ)言中儡羔,用const修飾的變量必須在聲明時(shí)進(jìn)行初始化(用來修飾函數(shù)的形參除外);

如:

int main()

{

const int a;//常量是只讀的必須賦予初始值宣羊,否則無法使用

a = 1; //錯(cuò)誤璧诵,變量a只讀,不能被改變

}
# 編譯后結(jié)果


char * const p;? 錯(cuò)誤

const char *p;正確(注意這種為什么是正確的),因?yàn)檫@里const是修飾p指向的變量,而不是指針變量p本身

一旦一個(gè)變量被const修飾后之宿,在程序中除初始化外對(duì)這個(gè)變量進(jìn)行的賦值都是錯(cuò)誤的比被。

(2)const與指針搭配使用

首先必須弄清楚兩個(gè)基礎(chǔ)概念:指針常量和常量指針

指針常量:即指針本身的值是不可改變的泼舱,而指針指向的變量的值是可以改變的;

常量指針:即指針指向的變量的值是不可改變的娇昙,而指針本身的值是可以改變的;

可以這樣去理解:因?yàn)橹羔槺旧硪彩且粋€(gè)變量,只不過指針存放的是地址而已噪裕,而一旦指針變成了常量股毫,即指針本身的值是不可變的,此時(shí)指針只能指向固定的存儲(chǔ)單元;指針一般會(huì)指向一個(gè)變量严蓖,如果該變量成為一個(gè)常量颗胡,那么該變量的值就不能被修改吩坝,即常量指針,指針指向的是一個(gè)不可變的變量弧呐。

如:

1 int a=3;

2 constint *p=&a;

3 intconst*p1=&a;

4 *p=4;

5 a=4;

第2行和第3行是等價(jià)的;

第四行是錯(cuò)誤的嵌纲,因?yàn)橛胏onst限定p指向的變量的值是不可修改的逮走,即不可通過指針p去修改變量a的值;

第五行是正確的,因?yàn)閍本身沒用const進(jìn)行修飾茅信,即a本身的值是可以修改的.


1 int a=1;

2 int b=2;

3 constint *p;

4 intconst *p1;

5 int *constp2;

6 int*constp3=&b

7 p=&a;

8 p1=&a;

9 p2=&b;

10 p3=&a;


第3、4妖谴、7酌摇、8行是正確的;

第5行是錯(cuò)誤的,第6行是正確的铸史,第10行是錯(cuò)誤的怯伊,因?yàn)閏onst在'*'后面耿芹,表示是來修飾指針變量本身挪哄,因此在聲明時(shí)必須進(jìn)行初始化,并且在后面不能再指向其它的變量.


#include

int main(void)

{

const int a=3;

int *pa=&a;

*pa=4;

printf("%d\n",*pa);

printf("%d\n",a);

return 0;

}

編譯結(jié)果:

e:\c++\test\test.c(6) : warning C4090:'initializing': different'const'qualifiers


輸出結(jié)果是: 4

4

從這里可以看出a的值被修改了,在C語(yǔ)言中用const去修飾整形變量a砸彬,即a的值是不可變的斯入,不能顯式地通過賦值語(yǔ)句去改變a的值,

但是不代表在程序中不能通過其它方法來修改這個(gè)值增蹭。

總結(jié):(1)在C語(yǔ)言中用const去修飾一個(gè)變量滋迈,表示這個(gè)變量是只讀的,不可通過顯式的調(diào)用a去修改a的值饼灿,并且此時(shí)a仍然是一個(gè)變 量碍彭,不能等同于常量;

(2)要注意const在聲明變量時(shí)所處的位置,位置不同窗骑,在意義上可能會(huì)有很大的不同。

如果const在'*'左邊创译,則表示指針指向的變量的值不可變;

如果const在'*'右邊软族,則表示指針的值是不可變的;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末立砸,一起剝皮案震驚了整個(gè)濱河市初茶,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌螺戳,老刑警劉巖折汞,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件爽待,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡膏燃,警方通過查閱死者的電腦和手機(jī)何什,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門禁炒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來霍比,“玉大人,你說我怎么就攤上這事悠瞬⊙哪恚” “怎么了障癌?”我有些...
    開封第一講書人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵涛浙,是天一觀的道長(zhǎng)摄欲。 經(jīng)常有香客問我,道長(zhǎng)胸墙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任但骨,我火速辦了婚禮奔缠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己箫锤,他們只是感情好雨女,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開白布氛堕。 她就那樣靜靜地躺著,像睡著了一般括儒。 火紅的嫁衣襯著肌膚如雪帮寻。 梳的紋絲不亂的頭發(fā)上赠摇,一...
    開封第一講書人閱讀 52,682評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音烫罩,去河邊找鬼。 笑死盗誊,一個(gè)胖子當(dāng)著我的面吹牛饿这,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播嚣鄙,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼哑子,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼卧蜓!你這毒婦竟也來了把敞?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎耽装,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體规个,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡诞仓,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年速兔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了憨栽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片翼虫。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡珍剑,死狀恐怖死陆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情别凤,我是刑警寧澤领虹,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布诉稍,位于F島的核電站最疆,受9級(jí)特大地震影響努酸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜获诈,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一镜会、第九天 我趴在偏房一處隱蔽的房頂上張望终抽。 院中可真熱鬧桶至,春花似錦昼伴、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至女蜈,卻和暖如春持舆,著一層夾襖步出監(jiān)牢的瞬間色瘩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工逸寓, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留居兆,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓竹伸,卻偏偏與公主長(zhǎng)得像泥栖,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子勋篓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容