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

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

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

2019-11-14 10:59:15
字體:
來源:轉載
供稿:網友

一,變量的作用域

1,代碼塊作用域。聲明位于一對大括號之間,有效范圍從聲明開始至代碼塊結束。 2,文件作用域。聲明位于所有代碼塊之外,有效范圍從聲明開始至文件尾。 3,函數作用域。函數內有效。一般只針對goto語句所用到的標簽。 4,原型作用域。只適用于函數聲明的括號內。(用到比較少) 例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: //函數作用域。 return int_b + 1;}

二,鏈接屬性

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

typedef char *charPtr;static charPtr ch_a; //static聲明將外部鏈接轉為內部鏈接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只對默認為外部鏈接的變量有效。 return 0;}int fun_a(int int_c){ return int_c + 1;}

三,存儲類型

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

四,static的作用

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

五,C++中的static

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 博乐市| 海伦市| 尖扎县| 乡宁县| 文山县| 盐城市| 华容县| 通江县| 道孚县| 祁门县| 南乐县| 彭州市| 泾源县| 蒙自县| 拜泉县| 宜兰县| 开江县| 福建省| 桦甸市| 德钦县| 古田县| 平利县| 奈曼旗| 饶平县| 山阳县| 中西区| 泽州县| 南通市| 萨嘎县| 都安| 黄平县| 无棣县| 平和县| 天镇县| 蛟河市| 东兰县| 长岭县| 新源县| 房山区| 兴宁市| 方正县|