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

首頁 > 學院 > 開發設計 > 正文

靜態持續變量

2019-11-11 06:04:21
字體:
來源:轉載
供稿:網友

C++為靜態存儲持續性變量提供了三種鏈接性。

外部鏈接性:可在其它文件中訪問;聲明不在任何函數內。

內部鏈接性:只能在當前文件中訪問;聲明不在任何函數內,使用關鍵字static。

無鏈接性:只能在當前函數或代碼塊中訪問;聲明在代碼塊中,使用關鍵字static。

這三種鏈接性在整個程序執行期間存在,與自動變量相比(棧中),壽命更長。編譯器將分配固定的內存塊來存儲錯有的靜態變量。

如果沒有顯式地初始化靜態變量,編譯器將把它設置為0。在默認下,靜態數組和結構將每個元素或成員的所有位都設置為0。當然如果加了顯式初始化,將被賦予相應的值。

使用外部鏈接變量(全局變量)要注意單定義規則:即變量只能由一次定義。因此由定義聲明和引用聲明兩種聲明方法。定義聲明將給變量分配存儲空間,引用聲明不分配,只是引用已有的變量。

引用聲明使用關鍵字extern,且不進行初始化;否則聲明為定義,導致分配存儲空間。如果要在多文件中使用外部變量。只需在一個文件中包含該變量的定義,但在使用該變量的其它文件中,都必須使用關鍵字extern。

注意,如果函數中聲明了一個與外部變量同名的變量,則將視為自動變量的定義,即自動變量將隱藏同名的全局變量。

當然,可以使用::作用域解析運算符使用變量的全局版本。

注意const全局變量的鏈接性為內部。在C++看來,全局const定義就像使用了static說明符一樣。延伸出一種用法:通常將常量定義(例如pi)放在頭文件中,如:

const double pi = 3.1415;

每個文件包括該頭文件,并用extern引用聲明使用該常量,由于鏈接性變為內部,每個文件都由自己私有的一組常量。如果處于某種原因希望鏈接性為外部,需要用extern覆蓋默認的內部鏈接性:

extern const int count = 1;

然后在使用該常量的文件中用extern聲明引用它。這與常規外部變量不同,定義時不用使用extern,請注意區分。

補充:所有函數默認都是靜態的,外部鏈接性,即文件間共享。如果希望是內部鏈接性的,應該用static聲明和定義。這種情況下,編譯器在該文件中查找函數定義;否則在所有程序文件中查找。如果找不到,則在標準庫中搜索。因此如果定義了一個與庫函數同名的函數,編譯器將選擇程序員定義的版本,而不是庫函數。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 靖远县| 兴文县| 襄樊市| 舒兰市| 柳河县| 牙克石市| 西青区| 罗田县| 平凉市| 舒兰市| 宁国市| 邵阳县| 英德市| 米易县| 陇川县| 澄城县| 周至县| 雷山县| 阳东县| 竹溪县| 平谷区| 靖远县| 资溪县| 温州市| 阿勒泰市| 大化| 宁明县| 鄂伦春自治旗| 汤原县| 犍为县| 化隆| 霍邱县| 博爱县| 古蔺县| 邵东县| 宜州市| 鱼台县| 原平市| 若羌县| 孝昌县| 大荔县|