資料型別確定變數所需儲存單元的大小,儲存類別確定變數在記憶體中的儲存位置,從而確定其作用域和生存週期。auto(自動的)。在c語言中,儲存類別可以分為自動類和靜態類兩種。
區域性變數既可以說明成自動類,也可以說明成靜態類;全域性變數只能是靜態類。
register(暫存器的)。
static(靜態的)。
extern(外部的)。
在函式內部或復合語句內部定義的變數,函式的行參也屬於區域性變數。
說明:
全域性變數時在函式外部任意位置上定義的變數,它的作用域時從定義點到整個原始檔結束。全域性變數只有static一種類別,放在靜態儲存區。
當定義全域性變數時,若加上static關鍵字說明,則其作用域僅限於本編譯單位(本檔案)。static對區域性變數和全域性變數的作用效果不同 -
對區域性變數:作用域沒變,儲存類該為靜態;
編譯預處理就是在編譯前,由編譯預處理程式按照編譯預處理命令列的指示對源程式進行處理,c有三類預處理:巨集定義;
檔案包含;
條件編譯;
凡是以#開頭的行,都稱為編譯預處理命令列。
編譯預處理命令列可以根據需要出現在程式的任何一行的開始位置,其作用一直持續到檔案末尾。
編譯預處理命令列不是c語句,行末不需加分號。
終止巨集定義
#undef 巨集名
#include 「檔名」
#include 《檔名》
說明:
一般情況下,源程式中的所有行都參加編譯過程。但有時會希望其中一部分在滿足一定的條件時才進行編譯。形式一
#ifdef 識別符號 /*如果識別符號被定義,則編譯1,否則編譯2 */
程式段1;
#else
程式段2;
#endif
形式二
#inndef 識別符號 /* 若果識別符號沒有被定義,則編譯1,否則編譯2 */
程式段1;
#else
程式段2;
#endif
形式三
#if 表示式 /* 當表示式為真時,則編譯1,否則編譯2 */
程式段1;
#else
程式段2;
#endif
儲存類和作用域規則
c語言的儲存類分為四種,它們是 auto 自動的,extern 外部的,static 靜態的,register 暫存器的。分程式是由一對花括號擴起來的一段程式,乙個函式就是乙個分程式,乙個復合語句也是乙個分程式。c語言中分程式結構允許並列或巢狀。函式可以看成是最外一層並列的分程式,只是它被命名,並可...
全域性預處理與執行,作用域與作用域鏈
一.全域性預處理 全域性預處理 首先會建立乙個詞法環境 lexical environment 然後掃面全域性裡用var宣告的變數和 用宣告的方式建立的函式即function 函式表示式即var q function 掃瞄後把變數存入寫成 a undefined 把函式寫成 指向函式或對函式的乙個引...
儲存時間和作用域
自動儲存時間 靜態儲存時間 動態儲存時間 1 自動變數 在一對大括號的範圍內宣告的變數,稱為自動變數,具有區域性作用域,乙個自動變數在 作用域 中的時間從宣告他的那一刻開始,一直到包含器宣告的 塊結束為止。由棧記憶體自動分配。棧預設的容量是1mb.自動變數 出生 於他被定義之時,占用的空間在棧上分配...