C C 中變數的作用域和生存週期

2021-09-12 13:41:28 字數 1117 閱讀 3253

關鍵字:static extern auto

區域性變數的作用域,起始於定義處,直到所在的大括號處結束。

全域性變數的作用域,起始與定義處,知道本檔案結束。參考

先看幾段**,理解了他們就理解了作用域的概念:

//===**1*****

#includeint main()

printf("a = %d\n",a);//a = 10

return 0;

}/*整個程式的執行結果是:

a = 1

a = 10

說明括號內的變數作用不了括號外的變數*/

再看下面一段**,與第一段**的區別是第乙個區域性變數a沒有給初始值:

//===**2*****

#includeint main()

printf("a = %d\n",a);//a = ?

return 0;

}/*整個程式的執行結果是:

a = 1

a = 不可** ,我的電腦跑出來a = 2686756

*/

原因是,a 是區域性變數,區域性變數在計算機中儲存在棧中,棧的值是之前儲存在裡面的值,所以是隨機的。

再看第三段**,假如第乙個a是全域性變數,也就是宣告定義在main函式以外:

//===**3*****

#includeint a = 10;

int main()

printf("a = %d\n",a);//a = 100

return 0;

}/*整個程式的執行結果是:

a = 1

a = 100

*/

值得注意的是,如果a是全域性變數,預設初值為0,看第四段**:

//===**4*****

#includeint a;

int main()

printf("a = %d\n",a);//a = 0

return 0;

}/*整個程式的執行結果是:

a = 1

a = 0

*/

Java中變數的作用域和生存週期

看看下面的 輸出啥呢 package cn.lifx.test public class test2 public void aa public static void bb public void cc 編譯就出錯了,為啥呢?唉,挺基礎的東西,要我做還真做不對,基礎不紮實啊!因為 區域性變數不能被...

靜態變數的生存週期和作用域

首先要理解生存週期與作用域的區別 生存週期 變數從定義到銷毀的時間範圍。存放在全域性資料區的變數的生存週期存在於整個程式執行期間,而存放在棧中的資料則隨著函式等的作用域結束導致出棧而銷毀,除了靜態變數之外的區域性變數都存放於棧中。作用域 變數的可見 域 塊作用域,函式作用域,類作用域,程式全域性作用...

區域性變數的作用域和生存週期

1 在函式開頭定義 2 在函式的內部定義 3 在復合語句塊內部定義 定義在函式內部的變數只能在函式內部引用,同樣定義在復合語句塊中的變數只是在復合語句塊內有效。將這種變數稱為 區域性變數 顧名思義,這些變數的作用域僅僅是在函式內部或復合語句塊內。復合語句塊的區域性變數舉例 include int m...