对全局变量,static静态变量的理解
如果所有的變量按照下面的程序進行定義和聲明,那么在main()函數中所有可用的變量為 ()。
void fun(int x) {static int y;……return; } int z; void main( ) {int a,b;fun(a);…… }A.x,y
B.x,y,z
C.a,b,z
D.a,b,x,y,z
static靜態變量的值在函數調用結束后會保持
x為static存儲類型,只初始化一次,且生存期是整個和程序相同的,即函數推出后x的值也不改變,下次調用時繼續保持的
**靜態變量(Static Variable)**在計算機編程領域指在程序執行前系統就為之靜態分配(也即在運行時中不再改變分配情況)存儲空間的一類變量。與之相對應的是在運行時只暫時存在的自動變量(即局部變量)與以動態分配方式獲取存儲空間的一些對象,其中自動變量的存儲空間在調用棧上分配與釋放。
局部變量(Local Variable):定義在函數體內部的變量,作用域僅限于函數體內部。離開函數體就會無效。再調用就是出錯。
全局變量(Global Variable):定義:所有的函數外部定義的變量,它的作用域是整個程序,也就是所有的源文件,包括.c和.h文件。
(函數體外只能進行初始化,不能進行賦值運算)
全局變量全部存儲在靜態存儲區。在程序開始執行過程中給全局變量分配空間,程序執行完畢就釋放空間。程序執行過程中固定的分配空間,而不需要動態進行分配是釋放。
動態存儲區主要存放以下數據:函數的形參、自動變量==(沒有加static的局部變量)==、函數調用的現場現場保護和返回值。
動態存儲區的數據,在函數開始調用時分配動態存儲空間,函數結束時釋放這些空間。
auto 變量:
函數中的局部變量,如果不專門的聲明為 static存儲,都是動態分配存儲空間。數據存儲在動態存儲區內。函數中的形參和函數中的變量都屬于此類,調用該函數時候系統自動的分配空間,在函數結束的時候,釋放該空間。這些局部變量被稱為自動變量。自動變量用 auto關鍵字聲明(可以省略auto )。
static 變量:
有時候希望我們調用的函數在釋放的時候不消失能保留原值,這就需要定義為靜態局部變量。用關鍵字 static聲明。
參考:https://blog.csdn.net/u013355826/article/details/53224303
總結
以上是生活随笔為你收集整理的对全局变量,static静态变量的理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 对表头指针、表头结点,单链表删除的理解
- 下一篇: 顺序表和链表的优缺点理解