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

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

靜態(tài)持續(xù)變量

2019-11-11 06:42:44
字體:
供稿:網(wǎng)友

C++為靜態(tài)存儲(chǔ)持續(xù)性變量提供了三種鏈接性。

外部鏈接性:可在其它文件中訪問;聲明不在任何函數(shù)內(nèi)。

內(nèi)部鏈接性:只能在當(dāng)前文件中訪問;聲明不在任何函數(shù)內(nèi),使用關(guān)鍵字static。

無鏈接性:只能在當(dāng)前函數(shù)或代碼塊中訪問;聲明在代碼塊中,使用關(guān)鍵字static。

這三種鏈接性在整個(gè)程序執(zhí)行期間存在,與自動(dòng)變量相比(棧中),壽命更長。編譯器將分配固定的內(nèi)存塊來存儲(chǔ)錯(cuò)有的靜態(tài)變量。

如果沒有顯式地初始化靜態(tài)變量,編譯器將把它設(shè)置為0。在默認(rèn)下,靜態(tài)數(shù)組和結(jié)構(gòu)將每個(gè)元素或成員的所有位都設(shè)置為0。當(dāng)然如果加了顯式初始化,將被賦予相應(yīng)的值。

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

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

注意,如果函數(shù)中聲明了一個(gè)與外部變量同名的變量,則將視為自動(dòng)變量的定義,即自動(dòng)變量將隱藏同名的全局變量。

當(dāng)然,可以使用::作用域解析運(yùn)算符使用變量的全局版本。

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

const double pi = 3.1415;

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

extern const int count = 1;

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

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


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 岳池县| 大竹县| 广南县| 贵南县| 陆川县| 四会市| 铜山县| 普定县| 哈密市| 紫云| 民丰县| 达州市| 福州市| 青田县| 连江县| 浪卡子县| 黎平县| 崇仁县| 承德县| 惠来县| 大宁县| 灵山县| 清涧县| 乡宁县| 安平县| 连江县| 湘潭市| 西乡县| 泗阳县| 巴塘县| 昌平区| 鄂托克旗| 阳新县| 进贤县| 磐安县| 古蔺县| 永丰县| 黔西县| 洛隆县| 容城县| 永清县|