儲存時間和作用域

2021-06-25 16:40:50 字數 714 閱讀 7623

自動儲存時間

靜態儲存時間

動態儲存時間

1)自動變數

在一對大括號的範圍內宣告的變數,稱為自動變數,具有區域性作用域,乙個自動變數在「作用域」中的時間從宣告他的那一刻開始,一直到包含器宣告的**塊結束為止。

由棧記憶體自動分配。棧預設的容量是1mb.

自動變數「出生」於他被定義之時,占用的空間在棧上分配,結束於與宣告該變數之前的第乙個開始開始大括號。

每次執行包含乙個自動變數宣告的語句塊是,這個變數就被重新建立。

2)全域性變數

在所有**塊和類之外宣告的變數稱為全域性變數,在宣告全域性變數的位置之後,檔案內的所有函式都可以訪問他們。如果在程式的最頂部宣告了全域性變數,那麼從檔案內的所有位置都可以訪問他們。

全域性變數的初始化發生在main()函式執行之前,所以在變數作用域的任何**內,始終可以使用它們。

全域性變數被具有相同名稱的區域性變數隱藏,但是,可以使用作用域解析運算子(::)獲得全域性變數。

3)靜態變數

static在**的作用域內宣告乙個變數,但是要讓他有靜態的儲存時間。

在乙個**快內宣告,並且只能從這個**塊(或者他的子塊)內部使用他,但是在程式的生存期內,他將持續存在。他的作用域仍然是這個**塊,但卻卻具有靜態儲存時間。如static int count;

儲存類和作用域規則

c語言的儲存類分為四種,它們是 auto 自動的,extern 外部的,static 靜態的,register 暫存器的。分程式是由一對花括號擴起來的一段程式,乙個函式就是乙個分程式,乙個復合語句也是乙個分程式。c語言中分程式結構允許並列或巢狀。函式可以看成是最外一層並列的分程式,只是它被命名,並可...

作用域和作用域鏈

全域性作用域 全域性的變數執行環境 函式作用域 函式內部的變數執行環境 每個函式都有自己的執行環境,當執行流進入乙個函式時,函式的環境就會被推入乙個環境棧中。函式執行之後,棧將環境彈出,把控制權返回給之前的執行環境。全域性作用域只要頁面不解除安裝,就一直存在,不釋放。函式每次在呼叫時,都會形成乙個作...

作用域和作用域鏈

var a 10 function f1 x,y f1 console.log b 此時b輸出5,因為b 5為隱式的全域性變數 在函式外面使用var 宣告的變數都是全域性變數,作用範圍是程式執行的地方.全域性作用域 函式除外 函式的形參是區域性變數 在函式內部,不使用var 定義的變數,叫隱式全域性...