在開(kāi)發(fā)中我們經(jīng)常會(huì)使用到static、const、extern等關(guān)鍵字,在此總結(jié)幾個(gè)關(guān)鍵字的作用和區(qū)別。
一、const和宏的區(qū)別- 編譯時(shí)刻:宏是預(yù)編譯(編譯之前處理),const是編譯階段。- 編譯檢查:宏不做編譯檢查,不會(huì)報(bào)編譯錯(cuò)誤,只是替換。const會(huì)編譯檢查會(huì)報(bào)編譯錯(cuò)誤。- 宏的好處:宏能定義一些函數(shù)和方法而const不能。- 宏的壞處:大量使用宏,容易造成編譯時(shí)間過(guò)長(zhǎng),每次都需要重新替換。
#####二、const的作用- const僅僅用來(lái)修飾右邊的變量(基本數(shù)據(jù)變量p,指針變量p)- 被const修飾的變量是只讀的。#####三、const開(kāi)發(fā)中使用場(chǎng)景:- 提供一個(gè)方法,這個(gè)方法的參數(shù)是地址,里面只能通過(guò)地址讀取值,不能通過(guò)地址修改值- 提供一個(gè)方法,這個(gè)方法的參數(shù)是地址,里面不能修改參數(shù)的地址。#####四、static和extern簡(jiǎn)單使用- static的作用 - 修飾局部變量 - 延長(zhǎng)局部變量的生命周期,程序結(jié)束才會(huì)銷毀。 - 局部變量只會(huì)生成一份內(nèi)存,只會(huì)初始化一次。 - 改變局部變量的作用域。 - 修飾全局變量 - 只能在本文件中訪問(wèn),修改全局變量的作用域,生命周期不會(huì)改 - 避免重復(fù)定義全局變量- extern作用: - 只是用來(lái)獲取全局變量(包括全局靜態(tài)變量)的值,不能用于定義變量- extern工作原理: - 先在當(dāng)前文件查找有沒(méi)有全局變量,沒(méi)有找到,才會(huì)去其他文件查找。*#####五、static與const聯(lián)合使用- static與const作用: - 聲明一個(gè)只讀的靜態(tài)變量- 開(kāi)發(fā)使用場(chǎng)景: - 在一個(gè)文件中經(jīng)常使用的字符串常量,可以使用static與const組合#####六、extern與const聯(lián)合使用 - 開(kāi)發(fā)中使用場(chǎng)景: - 在多個(gè)文件中經(jīng)常使用的同一個(gè)字符串常量,可以使用extern與const組合。- 原因: - static與const組合:在每個(gè)文件都需要定義一份靜態(tài)全局變量。 - extern與const組合:只需要定義一份全局變量,多個(gè)文件共享。- 全局常量正規(guī)寫(xiě)法: - 開(kāi)發(fā)中便于管理所有的全局變量,通常搞一個(gè)GlobeConst文件,里面專門(mén)定義全局變量,統(tǒng)一管理,要不然項(xiàng)目文件多不好找。由于本文本原意是總結(jié)視頻內(nèi)容,但后來(lái)發(fā)現(xiàn)作者原文在此寫(xiě)下地址【如何正確使用const,static,extern】|那些人追的干貨