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

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

變量的作用域、鏈接屬性和存儲類型

2019-11-14 11:50:54
字體:
供稿:網(wǎng)友

一,變量的作用域

1,代碼塊作用域。聲明位于一對大括號之間,有效范圍從聲明開始至代碼塊結(jié)束。 2,文件作用域。聲明位于所有代碼塊之外,有效范圍從聲明開始至文件尾。 3,函數(shù)作用域。函數(shù)內(nèi)有效。一般只針對goto語句所用到的標(biāo)簽。 4,原型作用域。只適用于函數(shù)聲明的括號內(nèi)。(用到比較少) 例1:

typedef char *charPtr; //文件作用域charPtr ch_a;//文件作用域int int_a;//文件作用域int fun_a(int int_b);//fun_a是文件作用域,int_b是原型作用域int main(void){ int int_c = 0;//代碼塊作用域 { charPtr ch_c; //代碼塊作用域 int int_d; //代碼塊作用域 } fun_a(100); return 0;}int fun_a(int int_b) //int_b是代碼塊作用域{ goto stop;stop: //函數(shù)作用域。 return int_b + 1;}

二,鏈接屬性

1,無鏈接。正常的變量,多次不相互沖突的聲明被當(dāng)作不同的變量實體。被存儲在不同的位置。 2,內(nèi)部鏈接。同一個文件內(nèi)多次聲明的同名變量,指的是同一個實體。位于不同的源文件則指不同的實體。(關(guān)鍵字static) 3,外部鏈接。同一個PRogram中不管聲明幾次,在幾個源文件中均表示同一個實體。(關(guān)鍵字extern) 例2:

typedef char *charPtr;static charPtr ch_a; //static聲明將外部鏈接轉(zhuǎn)為內(nèi)部鏈接extern int int_a; //聲明int_a在其他文件中定義,表示int_a是外部鏈接。int int_b; //外部鏈接,可以在外部源文件中用extern聲明。int fun_a(int int_c); //外部鏈接int main(void){ int int_d = 0; //無鏈接 { charPtr ch_c; //無鏈接 int int_e; //無鏈接 } fun_a(100); extern int int_f; //聲明int_f在其他文件中定義。 static int int_g; //無鏈接,因為static只對默認(rèn)為外部鏈接的變量有效。 return 0;}int fun_a(int int_c){ return int_c + 1;}

三,存儲類型

1,靜態(tài)內(nèi)存。程序運行之前創(chuàng)建,程序運行過程中一直存在。并且始終保持原先的值。(用static修飾) 2,運行時堆棧。程序執(zhí)行到聲明變量的代碼時創(chuàng)建,離開代碼段時自行銷毀。 3,硬件寄存器。(register)提示對應(yīng)的變量應(yīng)該放在機(jī)器的寄存器當(dāng)中,而不是內(nèi)存中。與編譯器相關(guān),不一定能夠達(dá)到效果。 注:由于函數(shù)調(diào)用是實參是通過堆棧進(jìn)行傳遞的,故函數(shù)的形參不能聲明用static進(jìn)行修飾。

四,static的作用

1,改變鏈接屬性:將變量由外部鏈接改為內(nèi)部鏈接,拒絕外部源文件使用該變量。如例2中的變量ch_a. 2,改變變量的存儲形式。變量存儲于靜態(tài)內(nèi)存。用于定義靜態(tài)變量。保證變量在程序運行的過程中一直存在,且只會被定義一次。 注:對于在.h中定義的文件作用域的static變量sa,每一個引用該頭文件的源文件都會有一個獨立的變量sa。

五,C++中的static

1,類靜態(tài)成員變量: 靜態(tài)成員是類所有實例的公用變量,可以理解為類的作用域內(nèi)的全局變量。同普通的static變量一樣,在程序初始化的時候分配一次,在程序運行期間一直存在。 2,類靜態(tài)成員函數(shù) 靜態(tài)函數(shù)是類所有實例的公用函數(shù),只能訪問類的靜態(tài)成員變量,通過類名::函數(shù)名方式調(diào)用。 3,對于類的靜態(tài)成員(包括變量和函數(shù))。在類的定義中只是聲明,必須在cpp中進(jìn)行初始化/實現(xiàn),初始化/實現(xiàn)時不需要static修飾。對于類的靜態(tài)成員變量程序會在啟動前(main()執(zhí)行前)進(jìn)行初始化。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 黑山县| 江华| 灵台县| 吉木萨尔县| 睢宁县| 百色市| 新化县| 盘山县| 潼关县| 张掖市| 原平市| 宜良县| 万源市| 沂源县| 炎陵县| 榆社县| 饶阳县| 山阳县| 海伦市| 涞水县| 九龙城区| 北碚区| 玉环县| 志丹县| 八宿县| 象山县| 文山县| 五峰| 东方市| 霍邱县| 马龙县| 措勤县| 玉林市| 通山县| 阳江市| 青州市| 沙河市| 遂宁市| 阿合奇县| 巴彦淖尔市| 八宿县|