變量與常量

變量聲明與定義

  • extrn type var_name_list: 聲明,告訴解析器存在這么一個變量或者函數等
  • type var_name_list:分配存儲空間,
    定義也是聲明,聲明不是定義

變量類型

基本類型、自定義類型

變量作用域

全局變量和局部變量的區別:

  • 定義位置:全局變量定義在函數或者代碼塊外部,在程序整個聲明周期內有效;局部變量定義在函數或者代碼塊內部。
  • 作用范圍:全局變量在整個程序中都有作用,但局部變量僅作用于函數內部。若函數內部的局部變量和某一全局變量重名,則局部變量的值覆蓋(此作用范圍內)全局變量的值,但是全局變量的值不變(在全局意義上)
  • 初始化:
    全局變量自動初始化,局部變量必須手動初始化。

常量

常量是固定值,可以理解為特殊的“變量”,在程序執行期間值不可改變。常量分為整數常量、浮點常量、布爾常量、字符常量、字符串常量。

常量定義

  • define 預處理器

    define identifier value

  • const 關鍵字
    const type variable = value

預處理器define和const的區別

  • 類型和安全檢查不同: 宏定義是字符替換,沒有數據類型的區別,因此替換時沒有類型檢查,可能產生邊際效應等錯誤;const常量是用聲明的方法創建,有類型區別,需要在編譯階段進行類型檢查;
  • 編譯器處理不同:宏定義是一個編譯時概念,在預處理階段展開,不能對宏定義進行調試,在編譯時生命周期結束;const是一個運行時概念,在程序運行中使用;
  • 存儲方式不同:宏定義直接替換,不分配內存,存儲在代碼段中;const分配內存,存儲在程序的數據段中。
  • 定義域不同:宏定義不受定義域限制,而const有定義域
  • 定義后能夠取消:宏定義可以使用#undef取消,const在定義域內永久有效。
  • 是否可以作為函數參數:宏定義不能出現在參數中,const常量可以作為參數。
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容