資料介紹
在 C 語言關(guān)鍵字中 const 舉足輕重,我們今天就深度聊一聊 const 的定義和實(shí)際應(yīng)用,讓它 不再是迷C 語言中 const 關(guān)鍵字是 constant 的縮寫,是恒定不變的意思。通常翻譯為常量、常數(shù)等
我們一看到 const 關(guān)鍵字馬上就想到了常量。這是不精確的,精確來說應(yīng)該是只讀變量其 值在編譯時(shí)不能被使用,因?yàn)榫幾g器在編譯時(shí)不知道其存儲(chǔ)的內(nèi)容
那么 const 推出的初始 目的正是為了取代預(yù)編譯指令,消除它的缺點(diǎn),同時(shí)繼承它的優(yōu)點(diǎn)
事實(shí)上在 C 語言中 const 功能很強(qiáng)大,它可以修飾變量、數(shù)組、指針、函數(shù)參數(shù)等
1、const 修飾的只讀變量:
C 語言中采用 const 修飾變量,功能是對(duì)變量聲明為只讀特性,并保護(hù)變量值以防被修改。 例如:
const int Max = 100;
int Array[Max];
這個(gè)大家可以在 Visual C++6.0 創(chuàng)建一個(gè).c 文件測試一下,你會(huì)發(fā)現(xiàn)在.c 文件中編譯器會(huì)提示出錯(cuò)。我們知道定義一個(gè)數(shù)組必須指定其元素的個(gè)數(shù),這也從側(cè)面證實(shí)在 C 語言中 const修飾的 Max 仍然是變量,只不過是只讀屬性罷了
還有值得注意的是,定義變量的同時(shí),必須初始化,并且不能再重新賦值
2、節(jié)省空間,避免不必要的內(nèi)存分配,同時(shí)提高效率
編譯器通常不為普通 const 只讀變量分配存儲(chǔ)空間,而是將他們保存在符號(hào)表中
這使得它 成為一個(gè)編譯期間的值,沒有了存儲(chǔ)與讀內(nèi)存的操作,使得它的效率也很高
例如:
#define M 3 //宏常量
const int N= 5; //此時(shí)并未將 N 放入內(nèi)存中
int i = N; //此時(shí)為 N 分配內(nèi)存,以后不再分配
int I = M; //預(yù)編譯期間進(jìn)行宏替換,分配內(nèi)存
int j = N; //沒有內(nèi)存分配
int J = M; //再進(jìn)行宏替換,又一次分配內(nèi)存
const 定義的只讀變量從匯編的角度來看,只是給出了對(duì)應(yīng)的內(nèi)存地址,而不是像#define 一樣給出的是立即數(shù)
所以,const 定義的只讀變量在程序運(yùn)行過程中只有一份備份(因?yàn)?它是全局的只讀變量,存放在靜態(tài)區(qū))
而#define 定義的宏常量在內(nèi)存中有若干個(gè)備份
#define 宏是在預(yù)編譯階段進(jìn)行替換,而 const 修飾的只讀變量是在編譯的時(shí)候確定其值
#define 宏沒有類型,而 const 修飾的只讀變量具有特定的類型
3、修飾一般變量
一般變量是指簡單類型的只讀變量。這種只讀變量在定義時(shí),修飾符 const 可以用在類型說 明符前,也可以用在類型說明符后,例如:
int const i = 2; 或 const int i = 2;
4、 修飾數(shù)組
C 語言中 const 還可以修飾數(shù)組,舉例如下:
const int array[5] = {1,2,3,4,5};
array[0] = array[0]+1; //錯(cuò)誤
數(shù)組元素與變量類似,具有只讀屬性,不能被更改;一旦更改,如程序?qū)?huì)報(bào)錯(cuò)
5、 修飾指針
C 語言中 const 修飾指針要特別注意,共有兩種形式,一種是用來限定指向空間的值不能修
改;另一種是限定指針不可更改。舉例說明如下:
Const 離誰近修飾誰的原則
例如:
const int * p1; //定義 1,p1 可變,p1 指向的對(duì)象不可變
int * const p2; //定義 2,p2 不可變,p2 指向的對(duì)象可變
上面定義了兩個(gè)指針 p1 和 p2
在定義 1 中 const 限定的是*p1,即其指向空間的值不可改變,若改變其指向空間的值如
*p1=20,則程序會(huì)報(bào)錯(cuò);但 p1 的值是可以改變的,對(duì) p1 重新賦值如 p1=&k 是沒有任何問 題的
完整版技術(shù)文檔請點(diǎn)擊文章開頭普通下載
- FlyMcu單片機(jī)在線編程軟件下載 70次下載
- PIC單片機(jī)的C語言編程電子版下載 0次下載
- 單片機(jī)編程和操作系統(tǒng)綜述 40次下載
- 舉例:單片機(jī)編程的應(yīng)用資料下載
- 如何有效編程單片機(jī)有源蜂鳴器驅(qū)動(dòng)資料下載
- 在avr單片機(jī)中,用iic編程自己怎么寫頭文件?資料下載
- 單片機(jī)在線編程板下載板的PCB原理圖免費(fèi)下載 15次下載
- AVR單片機(jī)編程軟件和資料合集免費(fèi)下載 47次下載
- 單片機(jī)程序?yàn)槭裁幢仨氁?b class="flag-6" style="color: red">CONST H
- STC-ISP單片機(jī)下載編程燒錄軟件的安裝和使用教程免費(fèi)下載 31次下載
- 單片機(jī)的最簡單的幾個(gè)編程程序免費(fèi)下載
- 帶你快速認(rèn)識(shí)和了解51單片機(jī)的詳細(xì)教程免費(fèi)下載 1次下載
- 51單片機(jī)匯編程序有哪些?51單片機(jī)匯編程序集詳細(xì)資料免費(fèi)下載 55次下載
- cpuview圖形化單片機(jī)編程軟件下載
- 消息驅(qū)動(dòng)在單片機(jī)編程中的應(yīng)用
- fpga編程與單片機(jī)編程的區(qū)別 1309次閱讀
- 單片機(jī)編程和plc編程有什么區(qū)別 3334次閱讀
- 單片機(jī)編程實(shí)例總結(jié) 1320次閱讀
- 單片機(jī)編程實(shí)例大全 3933次閱讀
- 如何自制一個(gè)AVR單片機(jī)ISP下載線 4414次閱讀
- pic單片機(jī)的各種匯編語言指令解析 2599次閱讀
- 基于Keil 5版本單片機(jī)編程軟件中MDK的應(yīng)用技巧解析 5667次閱讀
- 如何對(duì)IAR單片機(jī)編程軟件進(jìn)行編譯優(yōu)化 1w次閱讀
- 如何正確的設(shè)置IAR單片機(jī)編程軟件 5456次閱讀
- 單片機(jī)編程器是什么_單片機(jī)編程器應(yīng)用 1.7w次閱讀
- 單片機(jī)的引腳圖及引腳功能_單片機(jī)簡易編程 5.4w次閱讀
- 線編程技術(shù) STC單片機(jī)的下載線設(shè)計(jì) 4261次閱讀
- 單片機(jī)編程器作用及功能解析 1.4w次閱讀
- 單片機(jī)的編程語言和開發(fā)環(huán)境 5626次閱讀
- 單片機(jī)編程之匯編語言基礎(chǔ)-常用指令和程序模式 1.5w次閱讀
-
--文章
-
--閱讀
-
--粉絲
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論