(轉)全局變量和局部變量有什么區別?是怎么實現的?操作系統和編譯器是怎么知道的?


從作用域看:

全局變量具有全局作用域。全局變量只需在一個源文件中定義,就可以作用於所有的源文件。當然,其他不包含全局變量定義的源文件需要用extern 關鍵字再次聲明這個全局變量。

局部變量也只有局部作用域,它是自動對象(auto),它在程序運行期間不是一直存在,而是只在函數執行期間存在,函數的一次調用執行結束后,變量被撤銷,其所占用的內存也被收回。

從分配內存空間看:

全局變量,靜態局部變量,靜態全局變量都在靜態存儲區分配空間,而局部變量在棧里分配空間

全局變量和局部變量的區別是作用域不同,全局變量從定義位置開始到程序結束,而局部變量只限定義的函數內可使用,全局變量在數據段,而局部變量在棧,局部 變量在函數結束時內存空間就被系統收回,所以要返回的數組或字符串不要用局部變量定義

 

全局都放在靜態存儲區,局部一般臨時分配在棧里,生命周期到,自動釋放內存!



作者:nickYao
鏈接:https://www.jianshu.com/p/495c2da7e037
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM