全域性變數與區域性變數的區別

2021-06-23 01:27:22 字數 576 閱讀 7121

全域性變數與區域性變數的區別

變數的分類

變數可以分為:全域性變數、靜態全域性變數、靜態區域性變數和區域性變數。 

按儲存區域分,全域性變數、靜態全域性變數和靜態區域性變數都存放在記憶體的靜態儲存區域,區域性變數存放在記憶體的棧區。

按作用域分,全域性變數在整個工程檔案內都有效;靜態全域性變數只在定義它的檔案內有效;靜態區域性變數只在定義它的函式內有效,只是程式僅分配一次記憶體,函式返回後,該變數不會消失;區域性變數在定義它的函式內有效,但是函式返回後失效。

全域性變數和靜態變數如果沒有手工初始化,則由編譯器初始化為0。區域性變數的值不可知。

靜態全域性變數,只本檔案可以用。

全域性變數是沒有定義儲存型別的外部變數,其作用域是從定義點到程式結束.省略了儲存型別符,系統將預設為是自動型.

靜態全域性變數是定義儲存型別為靜態型的外部變數,其作用域是從定義點到程式結束,所不同的是儲存型別決定了儲存地點,靜態型變數是存放在記憶體的資料區中的,它們在程式開始執行前就分配了固定的位元組,在程式執行過程中被分配的位元組大小是不改變的.只有程式執行結束後,才釋放所占用的記憶體.

自動型變數存放在堆疊區中.堆疊區也是記憶體中一部分,該部分內存在程式執行中是重複使用的.

全域性變數與區域性變數的區別

例子 fibonacci數列 如果將乙個變數定義為區域性變數,比如i在這個 裡 include int f 1000 void fibonacci int n printf d i int main void 注意這裡的i,是區域性變數,因此每乙個i只對其所在函式內負責,此時可以出現正確的結果。如果...

區域性變數與全域性變數

根據c語言的說法,區域性變數 定義在方法內部的變數叫區域性變數 全域性變數 定義在方法外部的變數叫全域性變數。區域性變數和全域性變數的主要區別在於二者的生存週期不同。全域性變數的生存週期 靜態分配記憶體,程式執行期間常駐記憶體,直到程式執行結束。區域性變數的生存週期 動態分配記憶體,位於執行緒堆疊中...

全域性變數與區域性變數

區域性變數 在區域性 塊內定義 作用域在區域性 塊內,生命週期在區域性 塊內,結束時銷毀。include void test int main return 0 輸出 1111111111 全域性變數 在所有 塊外定義 作用域是整個工程,生命週期程式開始至結束。工程test 10 10 原始檔sum...