两个吃奶一个添下面视频_人妻第一页香蕉网_欧美xxxx少妇_妺妺窝人体色www婷婷

  • 歡迎訪問C語言網(wǎng)www.sztianhecheng.cn 比賽欄每月有獎月賽!舉辦比賽聯(lián)系QQ:2045302297
  • 問題反饋、粉絲交流 QQ群327452739 藍(lán)橋杯訓(xùn)練群:113766799 申請群時(shí)請備注排名里的昵稱
  • C語言研究中心 為您提供有圖、有料、解渴的C語言專題! 歡迎討論!

define和const的區(qū)別

編程經(jīng)驗(yàn) CTO 12642次瀏覽 0個(gè)評論

之前有同學(xué)題過這個(gè)問題,我就想為何要會提這個(gè)問題?大概因?yàn)樗麄兌寂c常量有關(guān)吧!define是宏定義,它可以把一個(gè)標(biāo)識符變成一個(gè)常量,而const是一個(gè)修飾符,它可以修飾一個(gè)變量為常類型,使其不可被修改!今天我們就把這兩個(gè)類型做一個(gè)區(qū)別。

 

首先,本質(zhì)上兩者不同,define修飾出來的是常量!并且是真常量!

而const修飾的是假常量,它本質(zhì)還是變量!只不過編譯器不讓你修改!

 

下面仔細(xì)講解,為什么說define修飾出來的是真常量呢?因?yàn)椋琩efine是宏定義,是宏替換!意味著程序在編譯前期會進(jìn)行文本替換,例如代碼define PI 3.1415926 這句話,編譯器會將代碼中所有出現(xiàn)PI的地方全部用3.1415926替換,然后在進(jìn)行編譯,所以本質(zhì)它就是一個(gè)常量嘛!

至于const呢,我們知道const一般修飾于定義變量的前面,比如cosnt int a = 10,意味著a就一直是19,是是一個(gè)不可修改的變量了。

往后試圖給a重新賦值都會引發(fā)錯(cuò)誤。這就是const修飾之后的結(jié)果,但請注意,這里不可修改的原因其實(shí)是編譯器在做檢查,檢查是否有修改這塊內(nèi)存上的值,一旦有就會報(bào)錯(cuò),所以從根本上說,cosnt修飾的變量依然是一個(gè)變量!只不過編譯器不讓你修改而已!

 

整體總結(jié)如下:

類別 define cosnt
何時(shí)處理 編譯期間進(jìn)行宏替換 編譯期間檢查是否有修改
誰來執(zhí)行 由系統(tǒng)判斷是否被修改 由編譯器限制
存儲位置 數(shù)據(jù)常量在內(nèi)存只讀區(qū) 變量在哪就在哪里

 

怎么樣,這下大家頓悟了嗎?

 

大家有任何問題歡迎聯(lián)系我們,一起探討研究!

C語言網(wǎng)提供「C語言、C++、算法競賽」在線課程,全部由資深研發(fā)工程師或ACM金牌大佬親授課,更科學(xué)、全面的課程體系,以在線視頻+在線評測的學(xué)習(xí)模式學(xué)習(xí),學(xué)練同步,拒絕理論派,真正學(xué)會編程!還有獎學(xué)金等增值福利等你!

C語言網(wǎng), 版權(quán)所有丨如未注明 , 均為原創(chuàng)丨本網(wǎng)站采用BY-NC-SA協(xié)議進(jìn)行授權(quán) , 轉(zhuǎn)載請注明define和const的區(qū)別!
喜歡 (33)
[jinyangH@aliyun.com]
分享 (0)
發(fā)表我的評論
取消評論
表情

Hi,您需要填寫昵稱和郵箱!

  • 昵稱 (必填)
  • 郵箱 (必填)