1. 程式人生 > >C語言__變數

C語言__變數

C語言__變數

變數的作用域

區域性變數

    1> 定義:在函式內部定義的變數,稱為區域性變數。形式引數也屬於區域性變數。

    2> 作用域:區域性變數只在定義它的函式內部有效,即區域性變數只有在定義它的函式內部使用,其它函式不能使用它。

全域性變數

    1> 定義:在所有函式外部定義的變數,稱為全域性變數。

    2> 作用域:全域性變數的作用範圍是從定義變數的位置開始到源程式結束,即全域性變數可以被在其定義位置之後的其它函式所共享。   


變數的儲存型別

    變數的儲存型別就是指變數儲存在什麼地方。有3個地方可以用於儲存變數:普通記憶體、執行時堆疊、硬體暫存器,可以把變數分為:自動變數、靜態變數、暫存器變數。變數的儲存型別決定了變數何時建立、何時銷燬以及它的值能保持多久,也就是決定了變數的生命週期。

自動變數

    1> 定義:自動變數是儲存在堆疊中的。

    2> 哪些是自動變數:被關鍵字auto修飾的區域性變數都是自動變數,但是極少使用這個關鍵字,基本上是廢的,因為所有的區域性變數在預設情況下都是自動變數。



    3> 生命週期:在程式執行到宣告自動變數的程式碼塊(函式)時,自動變數才被建立;當自動變數所在的程式碼塊(函式)執行完畢後,這些自動變數就會自行銷燬。如果一個函式被重複呼叫,這些自動變數每次都會重新建立。

靜態變數

    1> 定義:靜態變數是儲存在靜態記憶體中的,也就是不屬於堆疊。

    2> 哪些是靜態變數:

        所有的全域性變數都是靜態變數
        被關鍵字static修飾的區域性變數也是靜態變數

    3> 生命週期:靜態變數在程式執行之前建立,在程式的整個執行期間始終存在,直到程式結束。


暫存器變數

    1>定義:儲存在硬體暫存器中的變數,稱為暫存器變數。暫存器變數比儲存在記憶體中的變數訪問效率更高(預設情況下,自動變數和靜態變數都是放在記憶體中的)

    2> 哪些變數是暫存器變數:

  • 被關鍵字register修飾的自動變數都是暫存器變數
  • 只有自動變數才可以是暫存器變數,全域性變數和靜態區域性變數不行
  • 暫存器變數只限 intchar指標型別變數使用

    3> 生命週期:因為暫存器變數本身就是自動變數,所以函式中的暫存器變數在呼叫該函式時佔用暫存器中存放的值,當函式結束時釋放暫存器,變數消失。

    4> 使用注意:

  • 由於計算機中暫存器數目有限,不能使用太多的暫存器變數。如果暫存器使用飽和時,程式將暫存器變數自動轉換為自動變數處理
  • 為了提高運算速度,一般會將一些頻繁使用的自動變數定義為暫存器變數,這樣程式儘可能地為它分配暫存器存放,而不用記憶體