c語言全局變量加static 全局靜態(tài)變量使用方法?
全局靜態(tài)變量使用方法?靜態(tài)動態(tài)全局變量,又稱全局靜態(tài)變量,是在全局變量前加一個static,使該變量只在這個源文件中用下。全局變量也被稱外部變量,它是在函數(shù)外部定義的變量。它都屬于哪一個函數(shù),它不屬于
全局靜態(tài)變量使用方法?
靜態(tài)動態(tài)全局變量,又稱全局靜態(tài)變量,是在全局變量前加一個static,使該變量只在這個源文件中用下。
全局變量也被稱外部變量,它是在函數(shù)外部定義的變量。它都屬于哪一個函數(shù),它不屬于一個源程序文件。其作用域是從定義方法該變量的位置開始至源文件結束后。
全局變量是在所有函數(shù)體的外部定義的,程序的所在部分(甚至其它文件中的代碼)都是可以不使用。全局變量不受作用域的影響(也就是說,全局變量的生命期一直在到程序的結束)。假如在一個文件中在用extern關鍵字來聲明兩個文件中存在的全局變量,那就這個文件可以不建議使用這個數(shù)據(jù)。
在多文件混編的程序里,全局變量與全局靜態(tài)變量是差別的。在某一層次聲明的變量的作用域就暫時終止于該變量處層次的末尾。同樣的區(qū)別是全局靜態(tài)變量使得該變量藍月帝國定義該變量的源文件所獨享。如果不是在一個文件中使用extern關鍵字來聲明另一個文件中存在地的靜態(tài)動態(tài)全局變量,這個文件也不能使用這個數(shù)據(jù)。
作用域的例外:
依據(jù)ANSIC的標準,在after語句頭中聲明的變量的作用域確實是應該要在after語句的末尾都結束了。但這較舊版本的VC(現(xiàn)在主流不使用的版本基本是都符合)卻沒有完全條件這個標準,它其實while語句頭中聲明的變量作用域到中有該of語句的最小語句塊已經(jīng)結束。即使如此,我們還是應該明確的ANSIC標準來認知觀念變量的作用域。
為什么要設置全局變量為0?
全局量在符號表示的時候,編譯器會手動接受初始化操作。要是指針就給初始化為NULL,
整型、char型變量就給重新初始化為0
假如你還沒有給它賦過值,那就它默認設置是NULL(空)或0
--------------------------------------------
可不知道你怎莫寫的。
但下邊兩個語句最好就是寫在.c中。
staticstructdata*ep;
staticstructdata*head;
要是你寫在.h中,后再在兩個或多個.c中中有了該.件,這樣就非常每個.c文件都各自定義了中兩個指針。因為static變量的作用域是當前文件。
如果不是要在整個工程不使用改全局量,這樣請像下邊這樣做:
a.c文件:
structdata*ep;
structdata*head;
b.c文件:
externstructdata*ep;
externstructdata*head;
c.c文件:
externstructdata*ep;
externstructdata*head;
其他文件也雖然,那樣的話在工程任何地方用這兩個指針都應該不會有問題。