亚洲欧美精品沙发,日韩在线精品视频,亚洲Av每日更新在线观看,亚洲国产另类一区在线5

<pre id="hdphd"></pre>

  • <div id="hdphd"><small id="hdphd"></small></div>
      學(xué)習(xí)啦 > 知識(shí)大全 > 知識(shí)百科 > 百科知識(shí) > c語言什么是靜態(tài)變量

      c語言什么是靜態(tài)變量

      時(shí)間: 冠墩784 分享

      c語言什么是靜態(tài)變量

        靜態(tài)變量是屬于靜態(tài)存儲(chǔ)方式,但是屬于靜態(tài)存儲(chǔ)方式的量不一定就是靜態(tài)變量,下面是學(xué)習(xí)啦小編為大家整理的關(guān)于c語言中靜態(tài)變量的介紹,希望可以幫到大家哦。

        c語言靜態(tài)變量的概念定義

        “靜態(tài)變量”這一術(shù)語有兩個(gè)容易混淆的定義:

        語言無關(guān)的通用定義:與程序有著相同生命周期(英語:Objectlifetime)的變量;

        C族語言特有的定義:以存儲(chǔ)類聲明的變量。

        而在以Pascal為代表的許多程序語言中,所有局部變量都由系統(tǒng)自動(dòng)分配存儲(chǔ)空間,而所有全局變量的存儲(chǔ)空間則以靜態(tài)分配的方式獲取(對應(yīng)“靜態(tài)變量”),因此由于實(shí)際上“局部變量”和“全局變量”這兩個(gè)術(shù)語已足以涵蓋所有的情況,在這些程序語言中通常不使用“靜態(tài)變量”這一術(shù)語,而直接以“全局變量”代之。一般來說,在這些程序語言中,靜態(tài)變量就是全局變量,而即使在有明確區(qū)分全局和靜態(tài)變量的程序語言中,在編譯后的代碼里二者也以相同的方式獲取存儲(chǔ)空間。而今術(shù)語“靜態(tài)變量”的概念則主要基于C族語言的“static”的定義(即定義2)。

        c語言靜態(tài)變量的常量使用

        靜態(tài)變量也可以用于存儲(chǔ)常數(shù)。具體來說,靜態(tài)變量(全局變量及匯編語言里定義的符號(hào)亦同)可用const,constant或final(根據(jù)語言決定)等關(guān)鍵字標(biāo)識(shí),這時(shí)其值就會(huì)在編譯時(shí)(英語:Compiletime)設(shè)定,并且無法在運(yùn)行時(shí)改變。編譯器通常將靜態(tài)常量與文本一起置于目標(biāo)文件的文本區(qū)域,而非常量初始化數(shù)據(jù)則置于數(shù)據(jù)區(qū);而如若有需要,有些編譯器還可選擇為其開辟專用區(qū);為防止常數(shù)變量被錯(cuò)誤的指針寫入覆蓋,亦可在這塊區(qū)域啟用內(nèi)存保護(hù)機(jī)制。

        c語言靜態(tài)變量的變量特點(diǎn)

        靜態(tài)局部變量

        靜態(tài)局部變量屬于靜態(tài)存儲(chǔ)方式,它具有以下特點(diǎn):

        (1)靜態(tài)局部變量在函數(shù)內(nèi)定義,但不像自動(dòng)變量那樣,當(dāng)調(diào)用時(shí)就存在,退出函數(shù)時(shí)就消失。靜態(tài)局部變量始終存在著,也就是說它的生存期為整個(gè)源程序。

        (2)靜態(tài)局部變量的生存期雖然為整個(gè)源程序,但是其作用域仍與自動(dòng)變量相同,即只能在定義該變量的函數(shù)內(nèi)使用該變量。退出該函數(shù)后,盡管該變量還繼續(xù)存在,但不能使用它。

        (3)允許對構(gòu)造類靜態(tài)局部量賦初值。若未賦以初值,則由系統(tǒng)自動(dòng)賦值。數(shù)值型變量自動(dòng)賦初值0,字符型變量賦空字符。

        (4)對基本類型的靜態(tài)局部變量若在說明時(shí)未賦以初值,則系統(tǒng)自動(dòng)賦予0值。而對自動(dòng)變量不賦初值,則其值是不定的。根據(jù)靜態(tài)局部變量的特點(diǎn),可以看出它是一種生存期為整個(gè)源文件的量。雖然離開定義它的函數(shù)后不能使用,但如再次調(diào)用定義它的函數(shù)時(shí),它又可繼續(xù)使用,而且保存了前次被調(diào)用后留下的值。因此,當(dāng)多次調(diào)用一個(gè)函數(shù)且要求在調(diào)用之間保留某些變量的值時(shí),可考慮采用靜態(tài)局部變量。雖然用全局變量也可以達(dá)到上述目的,但全局變量有時(shí)會(huì)造成意外的副作用,因此仍以采用局部靜態(tài)變量為宜。

        給讀者一個(gè)簡單直白的例子(區(qū)別靜態(tài)局部變量和動(dòng)態(tài)局部變量):

        這里的運(yùn)行結(jié)果是:

        說明f在加了static的類型限制之后,就相當(dāng)于全局變量,函數(shù)調(diào)用完了之后,修改過的f的值仍然是有效的(即這個(gè)程序相當(dāng)于求i的階乘了)。而如果不加static的類型限制,那么,會(huì)是什么結(jié)果呢,我們看下面的代碼:

        程序的運(yùn)行結(jié)果是:

        也就是說,這時(shí)函數(shù)fun中的變量f的生命周期就僅限于fun函數(shù)的范圍內(nèi)了,在main中每次傳入新的參數(shù)i,f就會(huì)計(jì)算1*i的值并返回,而不會(huì)像之前那樣不斷的累乘了。
      看了“c語言什么是靜態(tài)變量”的人還看了:

      1.C語言見習(xí)報(bào)告6篇

      2.c語言中static的用法

      3.c語言基礎(chǔ)知識(shí)總結(jié)

      4.c語言const的用法

      5.常用c/c++的面試題有些呢

      6.華為軟件研發(fā)面試題大全

      7.Java程序員常用英語

      1380335