資料介紹
在 C 語言關鍵字中 const 舉足輕重,我們今天就深度聊一聊 const 的定義和實際應用,讓它 不再是迷C 語言中 const 關鍵字是 constant 的縮寫,是恒定不變的意思。通常翻譯為常量、常數(shù)等
我們一看到 const 關鍵字馬上就想到了常量。這是不精確的,精確來說應該是只讀變量其 值在編譯時不能被使用,因為編譯器在編譯時不知道其存儲的內(nèi)容
那么 const 推出的初始 目的正是為了取代預編譯指令,消除它的缺點,同時繼承它的優(yōu)點
事實上在 C 語言中 const 功能很強大,它可以修飾變量、數(shù)組、指針、函數(shù)參數(shù)等
1、const 修飾的只讀變量:
C 語言中采用 const 修飾變量,功能是對變量聲明為只讀特性,并保護變量值以防被修改。 例如:
const int Max = 100;
int Array[Max];
這個大家可以在 Visual C++6.0 創(chuàng)建一個.c 文件測試一下,你會發(fā)現(xiàn)在.c 文件中編譯器會提示出錯。我們知道定義一個數(shù)組必須指定其元素的個數(shù),這也從側(cè)面證實在 C 語言中 const修飾的 Max 仍然是變量,只不過是只讀屬性罷了
還有值得注意的是,定義變量的同時,必須初始化,并且不能再重新賦值
2、節(jié)省空間,避免不必要的內(nèi)存分配,同時提高效率
編譯器通常不為普通 const 只讀變量分配存儲空間,而是將他們保存在符號表中
這使得它 成為一個編譯期間的值,沒有了存儲與讀內(nèi)存的操作,使得它的效率也很高
例如:
#define M 3 //宏常量
const int N= 5; //此時并未將 N 放入內(nèi)存中
int i = N; //此時為 N 分配內(nèi)存,以后不再分配
int I = M; //預編譯期間進行宏替換,分配內(nèi)存
int j = N; //沒有內(nèi)存分配
int J = M; //再進行宏替換,又一次分配內(nèi)存
const 定義的只讀變量從匯編的角度來看,只是給出了對應的內(nèi)存地址,而不是像#define 一樣給出的是立即數(shù)
所以,const 定義的只讀變量在程序運行過程中只有一份備份(因為 它是全局的只讀變量,存放在靜態(tài)區(qū))
而#define 定義的宏常量在內(nèi)存中有若干個備份
#define 宏是在預編譯階段進行替換,而 const 修飾的只讀變量是在編譯的時候確定其值
#define 宏沒有類型,而 const 修飾的只讀變量具有特定的類型
3、修飾一般變量
一般變量是指簡單類型的只讀變量。這種只讀變量在定義時,修飾符 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; //錯誤
數(shù)組元素與變量類似,具有只讀屬性,不能被更改;一旦更改,如程序?qū)箦e
5、 修飾指針
C 語言中 const 修飾指針要特別注意,共有兩種形式,一種是用來限定指向空間的值不能修
改;另一種是限定指針不可更改。舉例說明如下:
Const 離誰近修飾誰的原則
例如:
const int * p1; //定義 1,p1 可變,p1 指向的對象不可變
int * const p2; //定義 2,p2 不可變,p2 指向的對象可變
上面定義了兩個指針 p1 和 p2
在定義 1 中 const 限定的是*p1,即其指向空間的值不可改變,若改變其指向空間的值如
*p1=20,則程序會報錯;但 p1 的值是可以改變的,對 p1 重新賦值如 p1=&k 是沒有任何問 題的
完整版技術文檔請點擊文章開頭普通下載
- FlyMcu單片機在線編程軟件下載 72次下載
- PIC單片機的C語言編程電子版下載 0次下載
- 單片機編程和操作系統(tǒng)綜述 40次下載
- 舉例:單片機編程的應用資料下載
- 如何有效編程單片機有源蜂鳴器驅(qū)動資料下載
- 在avr單片機中,用iic編程自己怎么寫頭文件?資料下載
- AVR單片機編程軟件和資料合集免費下載 47次下載
- 單片機程序為什么必須要包含CONST H
- 單片機C編程中的關鍵字sfr和sbit的簡介
- 單片機C51編程的警告提示說明
- 單片機的最簡單的幾個編程程序免費下載
- 帶你快速認識和了解51單片機的詳細教程免費下載 1次下載
- 51單片機匯編程序有哪些?51單片機匯編程序集詳細資料免費下載 55次下載
- cpuview圖形化單片機編程軟件下載
- 消息驅(qū)動在單片機編程中的應用
- fpga編程與單片機編程的區(qū)別 2.2k次閱讀
- 單片機編程和plc編程有什么區(qū)別 5k次閱讀
- 單片機編程實例總結(jié) 2.2k次閱讀
- 單片機編程實例大全 5.5k次閱讀
- 如何自制一個AVR單片機ISP下載線 4.9k次閱讀
- pic單片機的各種匯編語言指令解析 3k次閱讀
- 基于Keil 5版本單片機編程軟件中MDK的應用技巧解析 6.5k次閱讀
- 如何對IAR單片機編程軟件進行編譯優(yōu)化 1.1w次閱讀
- 如何正確的設置IAR單片機編程軟件 6.1k次閱讀
- 單片機編程器是什么_單片機編程器應用 1.9w次閱讀
- 單片機的引腳圖及引腳功能_單片機簡易編程 5.8w次閱讀
- 線編程技術 STC單片機的下載線設計 4.7k次閱讀
- 單片機編程器作用及功能解析 1.5w次閱讀
- 單片機的編程語言和開發(fā)環(huán)境 5.8k次閱讀
- 單片機編程之匯編語言基礎-常用指令和程序模式 1.6w次閱讀
下載排行
本周
- 1ECM96智能電測儀表使用說明書
- 3.41 MB | 7次下載 | 10 積分
- 2ECM72智能電測儀表使用說明書
- 2.07 MB | 2次下載 | 10 積分
- 3納祥科技NX9020中文規(guī)格書,114 dB CODEC,國產(chǎn)替代CS4272
- 440.34 KB | 2次下載 | 免費
- 4 斯丹電子 | 磁傳感技術在數(shù)據(jù)中心市場應用
- 614.56 KB | 2次下載 | 免費
- 5矽力杰 Silergy SY8303A 降壓轉(zhuǎn)換器 規(guī)格書 Datasheet 佰祥電子
- 815.36 KB | 1次下載 | 免費
- 6WD1117產(chǎn)品規(guī)格書
- 763.67 KB | 1次下載 | 免費
- 7LAT1596一文說明白STM32G4雙Bank啟動與升級
- 0.64 MB | 次下載 | 3 積分
- 8PC0815/PC0815A 850伏N溝道耗盡模式功率MOSFET技術手冊
- 0.42 MB | 次下載 | 免費
本月
- 1ECM96智能電測儀表使用說明書
- 3.41 MB | 7次下載 | 10 積分
- 2矽力杰 Silergy SY7215A 同步升壓調(diào)節(jié)器 規(guī)格書 Datasheet 佰祥電子
- 1.12 MB | 5次下載 | 免費
- 3SY50655 用于高輸入電壓應用的偽固定頻率SSR反激式穩(wěn)壓器英文資料
- 1.01 MB | 3次下載 | 免費
- 4ECM72智能電測儀表使用說明書
- 2.07 MB | 2次下載 | 10 積分
- 5怎么為半導體測試儀選擇精密放大器
- 0.65 MB | 2次下載 | 免費
- 6SY52341 次級側(cè)同步整流英文手冊
- 0.94 MB | 2次下載 | 免費
- 7華潤微 CRTE280P06L2-G -60V Trench P-MOSFET 技術參數(shù)與應用解析
- 1.83 MB | 2次下載 | 免費
- 8IP5356H_G3?支持高壓SCP/PD3.0等全協(xié)議并集成USB2.0智能監(jiān)測的移動電源 SOC
- 2.75 MB | 2次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935137次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設計
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233095次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191469次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183360次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81606次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73832次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65991次下載 | 10 積分
電子發(fā)燒友App





創(chuàng)作
發(fā)文章
發(fā)帖
提問
發(fā)資料
發(fā)視頻
上傳資料賺積分
評論