第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C語言中#define和const疑惑

C語言中#define和const疑惑

海綿寶寶撒 2019-04-14 11:21:24
#defineA50constintB=40;staticintarray[A];//正確staticintarray2[B];//錯誤constintC=2*A;//正確constintD=2*B;//錯誤intmain(){}疑惑const定義常量是不是發(fā)生在編譯時,所以在程序預(yù)處理階段不能對數(shù)組大小進行初始化或者對值進行初始化,而#define宏發(fā)生在預(yù)處理階段,可以用實體對數(shù)組大小初始化時出現(xiàn)的宏進行宏展開。我這樣理解對嗎望更詳細的補充
查看完整描述

2 回答

?
呼如林

TA貢獻1798條經(jīng)驗 獲得超3個贊

你理解的是正確的。
define這個是預(yù)處理命令,編譯器會自動展開。在編譯器進行編譯的時候,intarray[A]已經(jīng)被預(yù)處理展開成intarray[50]了。
而被const修飾的變量還是變量,只是這個變量放在一個只讀的數(shù)據(jù)段里面。另外,在預(yù)處理階段不能對數(shù)組大小進行初始化是不完全對的。如果說你使用gcc編譯器的話,像inta=255;charb[a];這樣是可以通過編譯的。
                            
查看完整回答
反對 回復(fù) 2019-04-14
?
哈士奇WWW

TA貢獻1799條經(jīng)驗 獲得超6個贊

define只是簡單的替換,在編譯前就完成所有替換。
const只是修飾符相當于權(quán)限限制符,表明在程序運行時這個值是常量,但是在c和c++中處理都不一樣,c中const只是簡單的告訴編譯器這是常量,但是在后面的使用中還是可以隱式修改。而c++中的const則在程序中始終都是常量,不可以被隱式修改!
                            
查看完整回答
反對 回復(fù) 2019-04-14
  • 2 回答
  • 0 關(guān)注
  • 354 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號