C語言用戶標識符的作用域和存儲類

引導語;用戶標識符是指用戶根據需要自己定義的標識符。以下是本站小編分享給大家的C語言用戶標識符的作用域和存儲類,歡迎參考學習!

C語言用戶標識符的作用域和存儲類

  1.1 局部變量和全局變量

在函數內部或複合語句內部定義的變量稱爲局部變量。函數的.形參屬於局部變量。在函數外部定義的變量稱爲全局變量。有時,局部變量也稱爲內部變量,全局變量也稱爲外部變量。

1.2 變量的存儲屬性(自動、靜態、寄存器、外部),變量的作用域和生存

C語言中來說明變量存儲屬性的關鍵字有四個:auto(自動)、static(靜態)、register(寄存器)、extern(外部)。

  1.局部變量的存儲屬性

局部變量可以是自動類別(用auto,register說明),也可以是靜態類別(用static說明)。形參只能是自動存儲類別,不允許是static類別。

當局部變量未指明類別時,被自動說明成自動(auto)變量。這類局部變量稱爲自動變量。其值存放在內存的動態存儲區,因此在退出作用域後,變量被自動釋放,其值不予保留。

當局部變量說明成寄存器(register)類型時,與自動(auto)變量一樣屬於自動類別,所不同的是此時變量的值保留在CPU中的寄存器中。

當變量說明成static(靜態)類型時,稱這樣的變量爲靜態局部變量。在程序運行期間,它佔據一個永久的存儲單元,在函數退出後,變量的值仍舊保留。

  2.全局變量的存儲屬性

全局變量都屬於靜態存儲類別,可以用extern和static對它們進行說明。

當一個文件中要引用另一文件中的全局變量或在全局變量定義前要引用它時,可用extern說明。相當於擴大全局變量的作用域。

用static(靜態)說明的全局變量稱爲靜態全局變量,它僅能由本文件引用,即使在其文件中用extern說明也不能使用,它相當於限制了全局變量作用域的擴展。

  1.3 內部函數和外部函數

1.在C語言中,所有的函數在本質上都是外部函數。

2.函數定義時用extern進行說明稱爲外部函數。函數的隱含類別爲外部函數,外部函數可以被其他文件調用。

3.定義函數時用static進行說明稱爲靜態函數,也稱內部函數。靜態函數也是外部函數,只是它僅侷限於它所在的文件,其他文件不能調用。