static變量與普通變量的異同



1、static局部變量與普通局部變量的異同

相同點:都是局部變量,在函數內部定義,僅能被該模塊內部的語句所訪問。
不同點:
1)內存分配與釋放:
static修飾的局部變量在內存中存放在靜態存儲區,static修飾的局部變量只有在整個程序結束的時候才會自動釋放。若下次調用該局部變量所在的函數時,不需要對它重新聲明,且會保留上一次調用存入的值。
普通局部變量存放在堆棧區,動態分配,其離開作用域‘{}’后,就會自動銷毀,釋放內存空間,無法再次使用此變量。
static局部變量在編譯階段,函數還未執行的時候,就已經分配了變量空間。
普通局部變量只有在執行到定義變量的語句時,才會分配內存空間。
2)初始化
static局部變量不初始化時,默認值為0;
普通局部變量不初始化時,默認值為隨機值。


2:static全局變量與普通全局變量的異同
兩者在存儲方式上都是靜態存儲,這兩者的區別在於非靜態全局變量的作用域是整個源程序,當一個源程序由多個源文件組成時,非靜態的全局變量在各個源文件中都是有效的。 而靜態全局變量則限制了其作用域, 即只在定義該變量的源文件內有效, 在同一源程序的其它源文件中不能使用它。由於靜態全局變量的作用域局限於一個源文件內,只能為該源文件內的函數公用, 因此可以避免在其它源文件中引起錯誤。


免責聲明!

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



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