我的位置: 首頁 > 學(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語言中保留的一個關(guān)鍵字,它用來限定一個變量是只讀的,即不可變的。程序中使用const可以在一

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

(1)用const修飾一般變量

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

如:

const int n; 這種聲明方式是錯誤的

const int n=5; 正確

void fun(const int n); 正確

const char a; 錯誤

char * const p; 錯誤

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

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

如:

const int n=5;

n=3; 錯誤

(2)const與指針搭配使用

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

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

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

可以這樣去理解:因為指針本身也是一個變量,只不過指針存放的是地址而已,而一旦指針變成了常量,即指針本身的值是不可變的,此時指針只能指向固定的存儲單元;指針一般會指向一個變量,如果該變量成為一個常量,那么該變量的值就不能被修改,即常量指針,指針指向的是一個不可變的變量。

如:

1 int a=3;2 const int *p=&a;3 int const *p1=&a;4 *p=4;5 a=4; 第2行和第3行是等價的;

第四行是錯誤的,因為用const限定p指向的變量的值是不可修改的,即不可通過指針p去修改變量a的值;

第五行是正確的,因為a本身沒用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行是錯誤的,第6行是正確的,第10行是錯誤的,因為const在'*'后面,表示是來修飾指針變量本身,因此在聲明時必須進(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的值,

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

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

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

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

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

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

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