const與宏 static extern關(guān)鍵字區(qū)別

const與宏:

1惩阶、編譯時(shí)刻:

宏是預(yù)編譯的--編譯之前處理糊探,const是編譯階段的

2钾埂、編譯檢查:

宏不做檢查,不會(huì)報(bào)編譯錯(cuò)誤科平,只是替換褥紫。const會(huì)編譯檢查,會(huì)編譯錯(cuò)誤瞪慧。

3髓考、宏的好處與壞處:
好處:宏能定義一些函數(shù)\方法。(const不能)
壞處:使用大量的宏弃酌,容易造成編譯時(shí)間久绳军,每次都需要重新替換。宏并不會(huì)生成很多內(nèi)存矢腻,宏定義的是常量门驾,常量都放在常量區(qū),只會(huì)生成一份內(nèi)存多柑。
比如 str = HONG str2 = HONG strstr2是同一塊內(nèi)存奶是,沒(méi)有新分配內(nèi)存。

const僅僅用來(lái)修飾右邊的變量(包括基本數(shù)據(jù)變量p竣灌,指針變量*p)被const修飾的變量是readonly的聂沙。
eg:(const int b = 20;) == (int const b = 20;) const 修飾的都是右邊的基本變量b b不能再次修改值。報(bào)錯(cuò)
(const int *p1;) == ( int const *p1;)兩種方式一樣*p1是常量 p1是變量
int * const p1; *p1是變量 p1是常量
(const int * const p1;) == ( int const * const p1; ) *p1是常量 p1是常量

需求例子:1初嘹、提供一個(gè)方法及汉,這個(gè)方法的參數(shù)是地址,里面只能通過(guò)地址讀取值,不能通過(guò)地址修改值屯烦。
test(const int *)p; // p地址是變量 *p是常量不能修改值
2坷随、提供一個(gè)方法房铭,這個(gè)方法的參數(shù)是地址,里面不能修改參數(shù)的地址
test(int * const)p; // *p是變量温眉,p是常量

staticextern
static修飾局部變量
1缸匪、延長(zhǎng)局部變量的生命周期,程序結(jié)束才會(huì)銷毀
2类溢、局部變量只會(huì)生成一份內(nèi)存凌蔬,只會(huì)初始化一次
3、改變局部變量的作用域
static修飾全局變量
1闯冷、只能在本文件中訪問(wèn)砂心,修改全局變量的作用域,生命周期不會(huì)改
2蛇耀、避免重復(fù)定義全局變量
extern作用:
只是用來(lái)獲取全局變量(包括全局靜態(tài)變量)的值辩诞,不能用于定義變量
extern工作原理:先在當(dāng)前文件查找有沒(méi)有全局變量,沒(méi)有找到蒂窒,才會(huì)去其他文件查找躁倒。

staticconst聯(lián)合使用:
作 用:聲明一個(gè)只讀的靜態(tài)變量
開(kāi)發(fā)使用場(chǎng)景:在一個(gè)文件中經(jīng)常使用的字符串常量荞怒,可以使用staticconst組合洒琢。
static NSString const *key = @"name";// *key只讀 key可讀可寫

externconst聯(lián)合使用:
使用場(chǎng)景:在多個(gè)文件中經(jīng)常使用的同一個(gè)字符串常量,可以使用externconst組合褐桌。
eg: extern NSString *const nameKey = @"name";

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末衰抑,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子荧嵌,更是在濱河造成了極大的恐慌呛踊,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件啦撮,死亡現(xiàn)場(chǎng)離奇詭異谭网,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)赃春,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門愉择,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人织中,你說(shuō)我怎么就攤上這事锥涕。” “怎么了狭吼?”我有些...
    開(kāi)封第一講書人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵层坠,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我刁笙,道長(zhǎng)破花,這世上最難降的妖魔是什么谦趣? 我笑而不...
    開(kāi)封第一講書人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮旧乞,結(jié)果婚禮上蔚润,老公的妹妹穿的比我還像新娘。我一直安慰自己尺栖,他們只是感情好嫡纠,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著延赌,像睡著了一般除盏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上挫以,一...
    開(kāi)封第一講書人閱讀 51,727評(píng)論 1 305
  • 那天者蠕,我揣著相機(jī)與錄音,去河邊找鬼掐松。 笑死踱侣,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的大磺。 我是一名探鬼主播抡句,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼杠愧!你這毒婦竟也來(lái)了待榔?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤流济,失蹤者是張志新(化名)和其女友劉穎锐锣,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體绳瘟,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡雕憔,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了糖声。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片斤彼。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖姨丈,靈堂內(nèi)的尸體忽然破棺而出畅卓,到底是詐尸還是另有隱情,我是刑警寧澤蟋恬,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布翁潘,位于F島的核電站,受9級(jí)特大地震影響歼争,放射性物質(zhì)發(fā)生泄漏拜马。R本人自食惡果不足惜渗勘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望俩莽。 院中可真熱鬧旺坠,春花似錦、人聲如沸扮超。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)出刷。三九已至璧疗,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間馁龟,已是汗流浹背崩侠。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留坷檩,地道東北人却音。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像矢炼,于是被迫代替她去往敵國(guó)和親系瓢。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容