文章內容為自己學習所得,寫在簡書上只為增加記憶,希望各位大神賜教,也不希望誤人子弟,不喜勿噴!!!!謝謝
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"能被修改