宏
宏的常見用法
- 常用的字符串要抽成宏
- 常用的代碼抽成宏
#define DCScreenW [UIScreen mainScreen].bounds.size.width
#define DCUserDefaults [NSUserDefaults standardUserDefaults]
const
const:當有字符串常量的時候,蘋果推薦我們使用const
const 的作用
- 僅僅是用來修飾右邊的變量(只能修飾變量:基本變量,指針變量,對象變量)
- const修飾的變量,表示只讀,不能修改
- const書寫規范:一定要放在變量的左邊 下面兩種定義方法沒有區別
int const a = 10;
const int a = 10;
int *const p = &a; //p是只讀的
int const *p = &a; //*p是只讀的
int const * const p = &a; //*p是只讀的 ,p也是只讀的
const開發中的使用場景
- 定義一個全局只讀變量
- 在方法中定義只讀參數
static
static作用
修飾局部變量
1.延長這個局部變量的生命周期,只要程序運行,局部變量就會一直存在局部;
2.變量只會分配一次內存,為什么?用static修飾的代碼,在程序一啟動就會執行,以后就不會再執行 ;修飾全局變量
1.只會修改全局變量的作用域,表示只能在當前文件內使用;
extern
extern作用
- 只能聲明全局變量,不能定義變量
注意:extern修飾的變量不能初始化
extern使用場景:一般用于聲明全局變量
總結
static和const修飾效果
- static和const修飾全局變量
- static修飾全局變量,修改作用域,表示在當前文件中使用
- const修飾全局變量,變量只讀
- static和const一起修飾就是靜態全局只讀變量
const與宏的區別
- 編譯時刻:宏:預編譯(看見#就是預編譯) const:編譯時刻
- 編譯檢查:宏:不會檢查錯誤 const:會檢查錯誤
- 宏的好處:可以定義代碼
- 宏的壞處:編譯時間過長,因此常用的字符串使用const修飾
- blog:經常使用宏內存不會增加。只會分配一個內存,但是經常使用引用宏的指針,就會分配多個內存