變數生存期

2021-10-02 16:48:42 字數 1313 閱讀 9164

統計共呼叫counter()函式多少次。

count.c檔案**:

#include

intmain()

mycounter.c**:

//counter()函式

void counter();//函式宣告

void

counter()

執行結果為:count = 1,結果不對。因為counter()函式中的count是區域性變數,自動儲存,每次呼叫都需要重新建立、重新銷毀。應使用static int 強制使其靜態儲存,呼叫完後,不會被銷毀。

儲存型別說明符

儲存型別

說明auto

自動儲存

只能用於塊作用域的變數宣告中,區域性變數預設情況下歸為自動儲存型別

register

暫存器儲存

只能用於塊作用域的變數,請求速度快。對於迴圈次數較多的迴圈控制變數及迴圈體內反覆使用的變數均可定義為暫存器變數

static

靜態儲存

引導程式時建立變數,程式結束時變數消失

extern

外部儲存

說明符表示宣告的變數定義在別處。作用域是整個程式,生存期貫穿程式的開始和結束

count.c檔案**:

#include

//全域性變數的作用域,只屬於當前原始檔

int whilecount =0;

//全域性變數:用來記錄while迴圈的輪數

intmain()

printf

("請輸入迴圈的次數(輸入0退出):\n");

}return0;

}

mycounter.c**:

extern whilecount;

//引入外部變數whilecount

void

counter

(int);

//函式宣告

void

counter

(int i)

變數的作用域:全域性、區域性

變數的生存期:

變數的儲存方式:動態儲存(自動,暫存器),靜態儲存(靜態,外部)

由變數的儲存方式不同而產生的特性成為變數的生存期(變數的存在時間)

基本型別的靜態變數系統預設賦初值為0

靜態變數的生存期為整個源程式,作用域只是定義它的檔案

函式被呼叫時,其中的區域性靜態變數的值保留上次被呼叫的結果

變數的生存期

標籤 空格分隔 c 雙學位高階語言程式設計 c函式 這節課我們要學習以下幾個問題 編譯器是如何區分不同作用域中的同名變數的呢?編譯器將它們分配給了不同的位址,所以能夠區分。程式執行時,編譯器是如何為程式分配記憶體空間的呢?儲存區分類 記憶體資料分類 線性從上到下 記憶體低位址端 唯讀儲存區 區唯讀儲...

靜態生存期和動態生存期

靜態生存期 定義 如果某乙個物件的生存期和程式的執行的生存期一樣,則這個物件具有靜態生存期。關鍵字 static 特點靜態變數不會隨著每次函式的呼叫產生乙個新的副本,也不會隨著函式返回而失效。第n次呼叫函式時,靜態變數的值為第n 1次呼叫的靜態變數的值,依次類推!也就是說靜態變數 第一次賦值有效,也...

export Shell環境和變數生存期

test value export test 這樣的指令碼執行完後,test實際上是不存在的。接著看下面的 test value export test bash 這裡在指令碼最後一行再開乙個子shell,該shell應該是指令碼檔案所在shell的子shell,這個指令碼執行完後,是可以看到tes...