解釋 C 語言中變數的生命週期。


儲存類指定變數的作用域、生命週期和繫結。

要完全定義一個變數,不僅需要說明它的“型別”,還需要說明它的儲存類。

變數名標識計算機記憶體中某個物理位置,在該位置分配了一組位用於儲存變數的值。

儲存類告訴我們以下因素

  • 變數儲存在哪裡(記憶體或 CPU 暫存器)?
  • 如果未初始化,變數的初始值是什麼?
  • 變數的作用域是什麼(可以在哪裡訪問它)?
  • 變數的生命週期是什麼?

生命週期

變數的生命週期定義了計算機為其分配記憶體的持續時間(記憶體分配和釋放之間的持續時間)。

在 C 語言中,變數可以具有自動、靜態或動態生命週期。

  • 自動 − 具有自動生命週期的變數在每次遇到其宣告時建立,並在退出其所在的程式碼塊時銷燬。
  • 靜態 − 變數在第一次執行宣告時建立,並在執行停止/終止時銷燬。
  • 動態 − 變數的記憶體透過記憶體管理函式分配和釋放。

儲存類

C 語言中有四種儲存類 −

儲存類儲存區域預設初始值生命週期作用域關鍵字
自動記憶體直到控制權保留在程式碼塊中直到控制權保留在程式碼塊中區域性auto
暫存器CPU 暫存器垃圾值直到控制權保留在程式碼塊中區域性暫存器
靜態記憶體函式呼叫之間的值區域性靜態
外部記憶體垃圾值在整個程式執行期間全域性extern

示例

以下是自動儲存類的 C 程式 −

 即時演示

#include<stdio.h>
main ( ){
   auto int i=1;{
      auto int i=2;{
         auto int i=3;
         printf ("%d",i)
      }
      printf("%d", i);
   }
   printf("%d", i);
}

輸出

當執行上述程式時,它會產生以下輸出 −

3 2 1

示例

以下是外部儲存類的 C 程式 −

 即時演示

#include<stdio.h>
extern int i =1; /* this ‘i’ is available throughout program */
main ( ){
   int i = 3; /* this ‘i' available only in main */
   printf ("%d", i);
   fun ( );
}
fun ( ) {
   printf ("%d", i);
}

輸出

當執行上述程式時,它會產生以下輸出 −

3 1

更新於: 2024年6月20日

6K+ 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.