解釋 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
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP