c語言中靜態(tài)變量 什么叫靜態(tài)變量?與動態(tài)變量的差別在哪?
什么叫靜態(tài)變量?與動態(tài)變量的差別在哪?動態(tài)變量和靜態(tài)變量之間的定義和區(qū)別如下:1。在定義中,靜態(tài)變量比動態(tài)變量多了一個關鍵字static,例如:dynamic variables:inti,stati
什么叫靜態(tài)變量?與動態(tài)變量的差別在哪?
動態(tài)變量和靜態(tài)變量之間的定義和區(qū)別如下:
1。在定義中,靜態(tài)變量比動態(tài)變量多了一個關鍵字static,例如:dynamic variables:inti,static variables:staticnti
2。在子例程中,動態(tài)變量每次被調(diào)用時都從零開始,原始數(shù)據(jù)不會被保留。調(diào)用靜態(tài)變量時,原始值不變,如:Main(){inti}For(I=0I<5i)fun()//fun1()}void fun()//輸出結果為11111{intjj printf(%d,J)}void fun 1()//輸出結果為12345{staticintjj}printf(%d,J)}
靜態(tài)變量表示在全局存儲區(qū)域與全局變量分配在同一存儲區(qū)域中,這與在堆棧中分配的變量不同。靜態(tài)變量只在變量的作用域中可見,而全局變量則處處可見。這是靜態(tài)變量和全局變量之間的區(qū)別。例如:int aint Func1(){static int b=0b return b}int func2(){int c=0C return c}int main(){a=1/*b=1*/printf(%dn,F(xiàn)unc1())printf(%dn,F(xiàn)unc1())printf(%dn,func2())printf(%dn,func2())}其中a是全局變量,b是靜態(tài)變量,c是堆棧變量,而a=1語句是正確的=1是錯誤的,因為B只在func中可見。靜態(tài)變量B在程序運行時立即分配,并在程序完成后消失。靜態(tài)類型變量只初始化一次。因此,每次運行func1時,返回值都會增加1。但是,如何運行func2,返回值是1,因為C每次都被重新分配并初始化為0。程序的執(zhí)行結果是1211
靜態(tài)局部變量
不同于局部變量,它在函數(shù)退出時總是存在的,但不能被其他
函數(shù)使用。當函數(shù)再次進入時,最后的結果將被保存。其他變量與局部變量相同。
2. turboc2.0允許將一個大的程序劃分成幾個獨立的模塊文件分別編譯,然后將各個模塊的目標文件連接在一起,從而提高編譯速度,方便軟件的管理和維護。Static
全范圍變量是只在定義它的源文件中可見,而在其他源文件中不可見的變量。它與
full variable的區(qū)別在于full variable可以解釋為外部變量并由其他源文件使用,而靜態(tài)full variable不能解釋為外部變量,即只能由源文件使用。