C語言中的變數範圍

來源:互聯網
上載者:User

全域變數、靜態全域變數、靜態局部變數、局部變數 收藏
 全域和靜態變數都在堆裡。

全域變數的作用範圍是整個程式(如果程式是多個檔案,必須在其他的檔案中說明)。
靜態變數的作用範圍要看靜態變數的位置,如果在函數裡,則作用範圍 就是這個函數。

靜態全域變數,只在本檔案可以用,雖然整個程式包含多個檔案,但靜態全域變數只能用在定義它的那個檔案裡,卻不能用在程式中的其他檔案裡。它是定義儲存因型為靜態型的外部變數,其範圍是從定義點到程式結束,所不同的是儲存類型決定了儲存地點,靜態型變數是存放在記憶體的資料區中的,它們在程式開始運行前就分配了固定的位元組,在程式運行過程中被分配的位元組大小是不改變的,只有程式運行結束後,才釋放所佔用的記憶體。

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

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

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

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

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

 

本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/yuanfeiyan/archive/2007/09/06/1774400.aspx

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.