我的位置: 首頁 > 學(xué)習(xí)專區(qū) > .NET技術(shù) > C語言的const關(guān)鍵字與指針搭配使用

C語言的const關(guān)鍵字與指針搭配使用

2013-05-27 08:33:10
來源:
[導(dǎo)讀] C語言的const關(guān)鍵字與指針搭配使用,const是C語言中保留的一個(gè)關(guān)鍵字,它用來限定一個(gè)變量是只讀的,即不可變的。程序中使用const可以在一

C語言的const關(guān)鍵字與指針搭配使用,const是C語言中保留的一個(gè)關(guān)鍵字,它用來限定一個(gè)變量是只讀的,即不可變的。程序中使用const可以在一定程度上提高程序的健壯性,但是程序中使用過多的const,可能在對(duì)代碼的閱讀時(shí)增加一定的難度。

(1)用const修飾一般變量

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

如:

const int n; 這種聲明方式是錯(cuò)誤的

const int n=5; 正確

void fun(const int n); 正確

const char a; 錯(cuò)誤

char * const p; 錯(cuò)誤

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

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

如:

const int n=5;

n=3; 錯(cuò)誤

(2)const與指針搭配使用

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

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

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

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

如:

1 int a=3;2 const int *p=&a;3 int const *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 const int *p; 4 int const *p1; 5 int * const p2; 6 int * const p3=&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)行初始化,并且在后面不能再指向其它的變量.

#includeint 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語言中用const去修飾整形變量a,即a的值是不可變的,不能顯示地通過賦值語句去改變a的值,

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

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

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

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

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

深圳北大青鳥嘉華校區(qū)

評(píng)論
熱點(diǎn)專題
>>
相關(guān)文章推薦
>>
園嶺北大青鳥 北大青鳥什么時(shí)候開學(xué) 現(xiàn)在什么專業(yè)好就業(yè) 深圳北大青鳥學(xué)校的學(xué)費(fèi)是多少 華南區(qū)就業(yè)示范班研討會(huì) 華南區(qū) 就業(yè)示范班研討會(huì) web前端 沙河北大青鳥 粵海北大青鳥 現(xiàn)在什么行業(yè)有前景 大學(xué)生找什么工作好 IT行業(yè)好不好 中國互聯(lián)網(wǎng)安全大會(huì) 網(wǎng)絡(luò)工程師發(fā)展前景怎么樣 第二屆“北大青鳥杯”超級(jí)演說家 如何選擇專業(yè)的成人電腦培訓(xùn) 零基礎(chǔ)能學(xué)會(huì)IT技術(shù)嗎 女生適合學(xué)什么技術(shù) 女生現(xiàn)在學(xué)什么好 北大青鳥IT培訓(xùn) 大學(xué)生求職困難怎么辦 北大青鳥夢(mèng)想職通車招聘會(huì) 大學(xué)畢業(yè)生找工作難怎么辦 轉(zhuǎn)行學(xué)什么好 退伍軍人學(xué)什么技術(shù)有出路 南山IT培訓(xùn) 2017國慶中秋雙節(jié)活動(dòng) 迎中秋慶國慶 軟件工程師就業(yè)前景好嗎 IT技術(shù)好學(xué)嗎 深圳北大青鳥IT培訓(xùn) IT培訓(xùn)機(jī)構(gòu)哪家好 適合女生的專業(yè) 學(xué)什么好創(chuàng)業(yè) 資質(zhì)榮譽(yù) 中國優(yōu)秀特許品牌 超級(jí)演說家預(yù)賽 網(wǎng)絡(luò)營銷怎么樣 初中畢業(yè)學(xué)什么好 電腦培訓(xùn)怎么樣 金蛛嘉華網(wǎng)絡(luò)營銷 學(xué)電腦主要學(xué)什么 學(xué)電腦學(xué)什么有前途 零基礎(chǔ)學(xué)電腦
好吊妞免费视频在线观看,久久亚洲国产人成综合网,久久精品国产2020,欧美精品综合在线
在线精品亚洲一区二区 | 亚洲一区二区三区97 | 亚洲欧美国产精品久久 | 偷偷做久久久久网 | 亚洲日韩小视频在线观看 | 一区二区三区视频在线观看视频 |