一、static變量static變量大致分為三種用法
1.用于局部變量中,成為靜態局部變量.靜態局部變量有兩個用法,記憶功能和全局生存期.
2.用于全局變量,主要作用是限制此全局變量被其他的文件調用.
3.用于類中的成員.表示這個成員是屬于這個類但是不屬于類中任意特定對象
1.靜態局部變量
<" />

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Static 變量和Static函數

系統 2538 0

static變量和static函數

static變量和static函數
<wbr>一、 static 變量</wbr> <wbr> static變量大致分為三種用法<br>1. 用于局部變量中,成為靜態局部變量. 靜態局部變量有兩個用法,記憶功能和全局生存期. <br>2. 用于全局變量,主要作用是限制此全局變量被其他的文件調用. <br>3. 用于類中的成員.表示這個成員是屬于這個類但是不屬于類中任意特定對象<br><b><wbr>1. 靜態局部變量<br></wbr></b><wbr>靜態局部變量屬于靜態存儲方式,它具有以下特點:<br>(1)靜態局部變量在函數內定義它的生存期為整個源程序,但是其作用域仍與自動變量相同,只能在定義該變量的函數內使用該變量。退出該函數后, 盡管該變量還繼續存在,但不能使用它。<br><br>(2)允許對構造類靜態局部量賦初值例如數組,若未賦以初值,則由系統自動賦以0值。<br><br>(3)對基本類型的靜態局部變量若在說明時未賦以初值,則系統自動賦予0值。而對自動變量不賦初值,則其值是不定的。 根據靜態局部變量的特點, 可以看出它是一種生存期為整個源程序的量。雖然離開定義它的函數后不能使用,但如再次調用定義它的函數時,它又可繼續使用, 而且保存了前次被調用后留下的值。 因此,當多次調用一個函數且要求在調用之間保留某些變量的值時,可考慮采用靜態局部變量。雖然用全局變量也可以達到上述目的,但全局變量有時會造成意外的副作用,因此仍以采用局部靜態變量為宜。<br><br>舉例如下:<br>int fun() { <br>static int a = 1; <br>a++; <br>} <br>在第一次進入這個函數的時候,變量a被初始化為1!并接著自增1,以后每次進入該函數,a就不會被再次初始化了,僅進行自增1的操作;在static發明前,要達到同樣的功能,則只能使用全局變量: <br>int a = 1; <br>int fun() { <br>a++; <br>}<br><br><b><wbr>2.靜態全局變量</wbr></b><wbr><br>全局變量(外部變量)的說明之前再冠以static 就構成了靜態的全局變量。全局變量本身就是靜態存儲方式, 靜態全局變量當然也是靜態存儲方式。 這兩者在存儲方式上并無不同。這兩者的區別雖在于非靜態全局變量的作用域是整個源程序, 當一個源程序由多個源文件組成時,非靜態的全局變量在各個源文件中都是有效的。 而靜態全局變量則限制了其作用域, 即只在定義該變量的源文件內有效, 在同一源程序的其它源文件中不能使用它。由于靜態全局變量的作用域局限于一個源文件內,只能為該源文件內的函數公用, 因此可以避免在其它源文件中引起錯誤。從以上分析可以看出, 把局部變量改變為靜態變量后是改變了它的存儲方式即改變了它的生存期。把全局變量改變為靜態變量后是改變了它的作用域, 限制了它的使用范圍。因此static 這個說明符在不同的地方所起的作用是不同的。<br><br><b><wbr>3.static的類成員變量</wbr></b><wbr><br>static關鍵字有兩種意思,你看上下文來判斷<br>a,表示變量是靜態存儲變量,表示變量存放在靜態存儲區.<br>b,表示該變量是內部連接(這種情況是指該變量不在任何{}之內,就象全局變量那樣,這時候加上static),也就是說在其它的.cpp文件中,該變量是不可見的(你不能用). <br><br><b><wbr>二、static 函數—— 內部函數和外部函數</wbr></b><wbr><br>當一個源程序由多個源文件組成時,C語言根據函數能否被其它源文件中的函數調用,將函數分為內部函數和外部函數。<br>1 內部函數(又稱靜態函數)<br>如果在一個源文件中定義的函數,只能被本文件中的函數調用,而不能被同一程序其它文件中的函數調用,這種函數稱為內部函數。<br>定義一個內部函數,只需在函數類型前再加一個“static”關鍵字即可,如下所示:<br>static函數類型函數名(函數參數表)<br>{……}<br>關鍵字“static”,譯成中文就是“靜態的”,所以內部函數又稱靜態函數。但此處“static”的含義不是指存儲方式,而是指對函數的作用域僅局限于本文件。<br>使用內部函數的好處是:不同的人編寫不同的函數時,不用擔心自己定義的函數,是否會與其它文件中的函數同名,因為同名也沒有關系。<br><br>2 外部函數<br>外部函數的定義:在定義函數時,如果沒有加關鍵字“static”,或冠以關鍵字“extern”,表示此函數是外部函數:<br>[extern]函數類型函數名(函數參數表)<br>{……}<br>調用外部函數時,需要對其進行說明:<br>[extern]函數類型函數名(參數類型表)[,函數名2(參數類型表2)……];<br>[案例]外部函數應用。<br>(1)文件mainf.c<br>main()<br>{extern void input(…),process(…),output(…);<br>input(…);process(…);output(…);<br>}<br>(2)文件subf1.c<br>……<br>externvoid input(……) /*定義外部函數*/<br>{……}<br>(3)文件subf2.c<br>……<br>externvoid process(……) /*定義外部函數*/<br>{……}<br>(4)文件subf3.c<br>……<br>extern void output(……)/*定義外部函數*/<br>{……}</wbr></wbr></wbr></wbr></wbr>

Static 變量和Static函數


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲精品综合 | 亚洲国产一成人久久精品 | 手机看片日韩日韩国产在线看 | 激情在线观看视频 | 亚洲不卡在线视频 | 国产成人精品视频一区 | 欧美色图偷窥自拍 | 久久美剧 | 国产亚洲精品精品国产亚洲综合 | 深夜影院在线 | 久久精品一区二区三区中文字幕 | a级毛片毛片免费观看久潮 a级毛片免费 | 午夜j| 国内精品久久久久久久久久影视 | 精品国产你懂的在线观看 | 亚洲国产模特在线播放 | 国产99r视频精品免费观看 | 国产高清美女一级a毛片久久w | 国产欧美日韩精品一区二 | 偷拍清纯高清视频在线 | 欧美80岁老妇一级毛片 | 加勒比亚洲精品久久久久久久久久 | 91精品成人免费国产片 | 日本成片网 | 亚洲 自拍 另类 制服在线 | 国产一区二区亚洲精品 | 影音先锋久草 | 国产色婷婷免费视频 | 久久久亚洲国产精品主播 | www久久只有这里有精品 | 色婷婷久久综合中文久久一本` | 欧美视频第二页 | 精品亚洲成a人7777在线观看 | 狠狠操福利视频 | 欧美刺激午夜性久久久久久久 | 久草中文网 | 国产色网| 手机看片福利盒子久久青 | 精品国产一区二区三区四 | 久草免费在线 | 狠狠色婷婷综合天天久久丁香 |