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é)果
