1、
初始化。
全域性static變數的初始化在編譯的時候進行。在main函式被呼叫之前初始化,並且,只初始化一次。
函式static變數在函式中有效,第一次進入函式初始化。以後進入函式將沿用上一次的值。
2、
生存期。
生存期,是main第一次執行,直到程式結束。比如下**:
#include
#include
int main()
int c=0;
return 0;
}儘管m變數在函式內部定義。但是它的生存期直到main函式執行完才結束。而非出了if語句的括號函式就結束。這是因為
static變數不是存放在堆疊中的,而是存放在全域性靜態資料區中。
1、
作用域。
如果在{}中定義了static變數,則其作用域為{}內。例如上面的m變數就只能在{}內訪問。如果有如下的**:
#include
#include
int main()
int c=0;
printf("%d",m);
return 0;
}將在printf
處報錯:「error c2065: 'm' : undeclared identifier
」。指示該變數沒有定義。
如果將static
變數定義為全域性的。則其擁有檔案作用域:只在宣告的檔案中有效,其他原始檔中不可見;同時有了static的生命週期。
如下:
#include
#include
int m=3;
int main()
int c=0;
printf("%d",m);
return 0;
}則static變數在source.cpp檔案中有效。 \
變數的生存期
標籤 空格分隔 c 雙學位高階語言程式設計 c函式 這節課我們要學習以下幾個問題 編譯器是如何區分不同作用域中的同名變數的呢?編譯器將它們分配給了不同的位址,所以能夠區分。程式執行時,編譯器是如何為程式分配記憶體空間的呢?儲存區分類 記憶體資料分類 線性從上到下 記憶體低位址端 唯讀儲存區 區唯讀儲...
變數的儲存方式和生存期
靜態儲存方式和動態儲存方式 靜態儲存方式是指在程式執行期間由系統分配固定的儲存空間的方式。動態儲存方式是在程式運氣期間根據需要進行動態的分配儲存空間的方式。記憶體中供使用者使用的儲存空間分為三個部分 1 程式區 2 靜態儲存區 3 動態儲存區。c的儲存型別包括四種 自動的 auto 靜態的 stat...
變數的儲存方式和生存期
一 儲存空間的情況 使用者區程式區 靜態儲存區 動態儲存區 靜態儲存方式 在程式執行期間由系統分配固定的儲存空間的方式。動態儲存方式 在程式執行期間根據需要進行動態的分配儲存空間的方式。二 資料儲存位置 靜態儲存區 全域性變數全部存放在靜態儲存區。動態儲存區 1 函式形式引數。2 函式中定義的沒有用...