国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

c語言中static變量

2019-11-17 05:40:20
字體:
來源:轉載
供稿:網友

  1. static 變量

靜態(tài)變量的類型 說明符是static。 靜態(tài)變量當然是屬于靜態(tài)存儲方式,但是屬于靜態(tài)存儲方式的量不一定就是靜態(tài)變量。 例如外部變量雖屬于靜態(tài) 存儲方式,但不一定是靜態(tài)變量,必須由 static加以定義后才能成為靜態(tài)外部變量,或稱靜態(tài)全局變量。

2. 靜態(tài)局部變量
靜態(tài)局部變量屬于靜態(tài)存儲方式,它具有以下特點:
(1)靜態(tài)局部變量在函數(shù)內定義 它的生存期為整個源程序,但是其作用域仍與自動變量相同,只能在定義該變量的函數(shù)內使用該變量。退出該函數(shù)后, 盡管該變量還繼續(xù)存在,但不能使用它。

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

3.靜態(tài)全局變量
全局變量(外部變量)的說明之前再冠以static 就構 成了靜態(tài)的全局變量。全局變量本身就是靜態(tài)存儲方式, 靜態(tài)全局變量當然也是靜態(tài)存儲方式。 這兩者在存儲方式上并無不同。這兩者的區(qū)別雖在于非靜態(tài)全局 變量的作用域是整個源程序, 當一個源程序由多個源文件組成時,非靜態(tài)的全局變量在各個源文件中都是有效的。 而靜態(tài)全局變量則限制了其作用域, 即只在 定義該變量的源文件內有效, 在同一源程序的其它源文件中不能使用它。由于靜態(tài)全局變量的作用域局限于一個源文件內,只能為該源文件內的函數(shù)公用, 因此 可以避免在其它源文件中引起錯誤。從以上分析可以看出, 把局部變量改變?yōu)殪o態(tài)變量后是改變了它的存儲方式即改變了它的生存期。把全局變量改變?yōu)殪o態(tài)變量 后是改變了它的作用域, 限制了它的使用范圍。因此static 這個說明符在不同的地方所起的作用是不同的。

4. static 函數(shù)…..

內部函數(shù)和外部函數(shù)

當一個源程序由多個源文件組成時,C語言根據(jù)函數(shù)能否被其它源文件中的函數(shù)調用,將函數(shù)分為內部函數(shù)和外部函數(shù)。
1 內部函數(shù)(又稱靜態(tài)函數(shù))
假如在一個源文件中定義的函數(shù),只能被本文件中的函數(shù)調用,而不能被同一程序其它文件中的函數(shù)調用,這種函數(shù)稱為內部函數(shù)。
定義一個內部函數(shù),只需在函數(shù)類型前再加一個“static”要害字即可,如下所示:
static 函數(shù)類型 函數(shù)名(函數(shù)參數(shù)表)
{……}
要害字“static”,譯成中文就是“靜態(tài)的”,所以內部函數(shù)又稱靜態(tài)函數(shù)。但此處“static”的含義不是指存儲方式,而是指對函數(shù)的作用域僅局限于本文件。
使用內部函數(shù)的好處是:不同的人編寫不同的函數(shù)時,不用擔心自己定義的函數(shù),是否會與其它文件中的函數(shù)同名,因為同名也沒有關系。

2 外部函數(shù)
外部函數(shù)的定義:在定義函數(shù)時,假如沒有加要害字“static”,或冠以要害字“extern”,表示此函數(shù)是外部函數(shù):
[extern] 函數(shù)類型 函數(shù)名(函數(shù)參數(shù)表)
{……}
調用外部函數(shù)時,需要對其進行說明:
[extern] 函數(shù)類型 函數(shù)名(參數(shù)類型表)[,函數(shù)名2(參數(shù)類型表2)……];

[案例]外部函數(shù)應用。
(1)文件mainf.c
main()
{ extern void input(…),PRocess(…),output(…);
input(…); process(…); output(…);
}

(2)文件subf1.c
……
extern void input(……) /*定義外部函數(shù)*/
{……}
(3)文件subf2.c
……
extern void process(……) /*定義外部 函數(shù)*/
{……}
(4)文件subf3.c
……
extern void output(……) /*定義外部函數(shù)*/
{……}

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 万州区| 上栗县| 镇安县| 芦溪县| 孝昌县| 永川市| 安福县| 广河县| 邵阳县| 通海县| 太保市| 手游| 于田县| 酉阳| 永德县| 永川市| 娄烦县| 南投市| 耒阳市| 突泉县| 合川市| 那曲县| 长岭县| 广宁县| 汪清县| 喀什市| 南投县| 苏尼特左旗| 忻城县| 六枝特区| 无为县| 木兰县| 涞水县| 中阳县| 三河市| 崇仁县| 库尔勒市| 南丰县| 余江县| 东安县| 娱乐|