各種變數的區別

2021-06-04 08:11:56 字數 426 閱讀 1657

這個網頁相當好,還解釋了棧和堆的區別!

對於乙個完整的程式,在記憶體中的分布情況如下圖:

**區全域性資料區

堆區棧區

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

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

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

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

生存週期不同作用範圍不同分配方式不同

各種變數特徵

變數 生命週期 作用域預設值 記憶體區域 鏈結屬性 全域性變數 定義在函式外的變數 普通全域性變數 程式執行時建立,程式退出時銷毀 從定義開始到本檔案結尾都可以使用 0 沒有初始化時的值,預設不允許使用 全域性變數區 外部 其他檔案也能用 靜態全域性變數 內部 只本檔案使用 區域性變數 在函式內部定...

各種輸入的區別

c 中cin cin.get cin.getline getline gets 等函式的用法 學c 的時候,這幾個輸入函式弄的有點迷糊 這裡做個小結,為了自己複習,也希望對後來者能有所幫助,如果有差錯的地方還請各位多多指教 本文所有程式均通過vc 6.0執行 1 cin 2 cin.get 3 ci...

C include的各種區別

c 中 include 和 include 的區別 一 include include 引用的是編譯器的類庫路徑裡面的標頭檔案。假如你編譯器定義的自帶標頭檔案引用在 c keil c51 inc 下面,則 include引用的就是 c keil c51 inc stdio.h 這個標頭檔案,不管你的...