宏,static、const 、extern簡介

宏的常見用法

  • 常用的字符串要抽成宏
  • 常用的代碼抽成宏
#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:經常使用宏內存不會增加。只會分配一個內存,但是經常使用引用宏的指針,就會分配多個內存
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • static 修飾局部變量 讓局部變量只初始化一次 局部變量在程序中只有一份內存 并不會改變局部變量的作用域,僅僅...
    大沖哥閱讀 1,394評論 0 1
  • const,static,extern簡介一、const與宏的區別(面試題):const簡介:之前常用的字符串常量...
    BinaryRo閱讀 258評論 0 1
  • 一、const與宏的區別(面試題): const簡介:之前常用的字符串常量,一般是抽成宏,但是蘋果不推薦我們抽成宏...
    Lucky丶晴閱讀 213評論 0 1
  • 一、const與宏的區別(面試題):const簡介:之前常用的字符串常量,一般是抽成宏,但是蘋果不推薦我們抽成宏,...
    _心暖閱讀 687評論 1 5
  • ### const,static,extern簡介 ### 一、const與宏的區別(面試題): * `const...
    老騷鵝閱讀 668評論 0 7