iOS中define宏和const常變量的區(qū)別

1、其實(shí)不僅是iOS中,c及c++中區(qū)別也是如此

2、區(qū)別:(1)define是宏定義,程序在預(yù)處理階段將用define定義的內(nèi)容進(jìn)行了替換。因此,在程序運(yùn)行時(shí),常量表中并沒有define定義的常量,系統(tǒng)不為他分配內(nèi)存。const在程序運(yùn)行時(shí)存在于常量表中,系統(tǒng)為他分配了內(nèi)存;(2)define定義的常量在預(yù)編譯處理時(shí)只是進(jìn)行了替換,并不能進(jìn)行數(shù)據(jù)類型檢驗(yàn);const定義的常量,在預(yù)編譯時(shí)進(jìn)行嚴(yán)格的數(shù)據(jù)檢驗(yàn)

3、define定義的常量要注意“邊緣效應(yīng)”,如下舉例什么是“邊緣效應(yīng)”

? #define? a? ? 2+3,,,那么a / 2結(jié)果應(yīng)該是什么呢?“邊緣效應(yīng)”的結(jié)果是——3,,,而你希望得到——2;所以你定義時(shí)應(yīng)該這樣:#define? a? ? (2+3)

4、NSString * const a = @"6666"-----和NSString const *a =@"6666"的區(qū)別

打印“塊1”的結(jié)果

打印“塊2”的結(jié)果

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容