iOS 項目中static,extern,define,const的使用注意事項

文章內容為自己學習所得,寫在簡書上只為增加記憶,希望各位大神賜教,也不希望誤人子弟,不喜勿噴!!!!謝謝

static

1>被static修飾的變量的生命周期會被延長,和應用程序的生命周期一樣
2>被static修飾的變量只分配一次內存
3>程序開始運行時就會給static修飾的變量分配內存
4>被static修飾的局部變量作用域只在當前函數或方法中使用
5>被static修飾的全局變量作用域只在當前文件中起作用

extern

1>聲明外部的全局變量(注意:extern只能用來聲明,不能用來定義)
2>工作原理:先在當前文件下查找有沒有對應的全局變量,如果沒有就去其它文件中查找(static修飾的全局變量不能使用extern)

define

1>宏定義是在預編譯里進行文本替換
2>沒有類型區分,不會進行代碼檢查
3>大量使用宏定義會使編譯的二進制文件增大,宏定義占用的只是代碼段而已,只會分配一塊內存空間

const

作用:1>使用const修飾的基本變量和指針變量
2>使用const修飾的變量不可以被改變,修飾完以后就會變成只讀屬性
3>const右邊的變量不能被修改

四種寫法:

  1、static const NSString *Coder = @"xxx";

  2、const NSString *Coder = @"xxx";

  3、NSString const *Coder = @"xxx";  

  4、NSString * const Coder = @"xxx"。

全局常量:不管你定義在任何文件夾,外部都能訪問(如:const NSString *Coder = @"x xx";)

局部常量:用static修飾后,不能提供外界訪問(如:static const NSString *Coder = @"漢xxx";)

const右邊的總不能被修改:
1.const NSString *Coder = @"xxx";

"*Coder"不能被修改, "Coder"能被修改

2.NSString const *Coder = @"xxx";

"*Coder"不能被修改, "Coder"能被修改

3.NSString * const Coder = @"xxx";

"Coder"不能被修改,"*Coder"能被修改

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容