何謂識別符號?
識別符號就是人為起的乙個名字。c/c++中,是你用來標識變數名、符號常量名、函式名、陣列名、檔名、類名、物件名等...
1.作用。
包括一下四個分類:
a.**塊的作用域(存在於大括號之間)
b.檔案的作用域(可以說這個作用域的分類完全是為了彰顯全域性變數在的作用而設定的,因為全域性變數可以貫穿)
c.函式原型的作用域------函式宣告的作用
d.函式作用域(用於goto語句使用),標誌出現在函式前後都可以使用【所以即使在**塊中,但不屬於**塊的作用域】
2.鏈結型別
a.外部鏈結型別----對外公開的,要求是全域性變數,一般指靜態變數
externintval1;
extern
void say_hello();
附加:extern的用法:
extern可以置於變數或者函式前,以表示變數或者函式的定義在別的檔案中,提示編譯器遇到此變數和函式時在其他模組中尋找其定義。另外,extern也可用來進行鏈結指定。
也就是說,定義extern int val後,編譯器就會嘗試到這個檔案關聯的檔案中(一般使用include進行包含的)進行查詢,查詢是否有int val這樣的變數定義語句。若找到即說明val在另乙個檔案中已經被定義,此時val就是另乙個檔案所定義的val。在此檔案中修改它的值在另乙個檔案中也是有效的!
1static
intvar2;
2static
void say_hello();
c.無鏈結---區域性變數,一般指函式內部的變數
3.儲存期
a.自動儲存期:被存放在棧。在函式內部定義的變數屬於自動儲存期
b.靜態儲存期:被存放在資料段中。全域性變數屬於靜態儲存期,另外,靜態儲存期也可以出現在函式內部,但是要在定義的時候加上static(如 static int c = 300;)
c.動態儲存期:被存放在堆中。一般動態變數的使用時用到!
1int * p = malloc(20); //
分配,用指標p指向匿名記憶體
2free(p); //
釋放所分配的匿名記憶體
識別符號的作用域
塊作用域 區域性作用域 檔案作用域 全域性作用域 函式原型作用域 函式作用域 類作用域 塊作用域 塊是函式中一對花括號 包括函式定義所使用的花括號 所括起的一段區域。在塊內說明的識別符號具有塊作用域,它開始於識別符號被說明的地方,並在標誌該塊結束的右花括號處結束。如果乙個塊內有乙個巢狀塊,並且該塊內...
C 識別符號的作用域
轉 包括 區域性作用域 全域性作用域 檔案作用域 函式作用域 函式原型作用域 名空間作用域 類作用域 注意 潛在作用域,也就是同名變數的作用域問題。1.區域性作用域 指在函式定義或者復合語句中,從識別符號的定義點開始到函式或者復合語句結束之間的程式段。在同乙個區域性作用域內不能出現相同名字的兩個區域...
識別符號的作用域,鏈結,儲存
2.識別符號的生存期 3.識別符號的儲存 4.extern的使用 翻譯單元 源 檔案.c 其所有標頭檔案.h 不細講 示例 int glogal 1 外部鏈結 全域性作用域 static int file 2 內部鏈結 檔案作用域 int main 識別符號的四大儲存期 具有靜態儲存期的變數在程式執...