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