最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

黑馬程序員匠心之作|C++教程從0到1入門編程,學(xué)習(xí)編程不再難

2023-07-30 19:13 作者:AlexiosIII  | 我要投稿

剛剛好奇去查了,轉(zhuǎn)自CSDN的zzhays


靜態(tài)全局變量和全局變量

之間的區(qū)別,表面上看都是作用在整個(gè)文檔,而且任何一個(gè)地方改變都會(huì)影響其值的改變。但是細(xì)分就會(huì)發(fā)現(xiàn)其區(qū)別:


//Example 1


#include <iostream.h>


void fn();


static int n; //定義靜態(tài)全局變量


void main()


{


???n=20; cout<<n<<endl; fn();


}


void fn() { n++; cout<<n<<endl; }



靜態(tài)全局變量有以下特點(diǎn): 該變量在全局?jǐn)?shù)據(jù)區(qū)分配內(nèi)存;未經(jīng)初始化的靜態(tài)全局變量會(huì)被程序自動(dòng)初始化為0(在函數(shù)體內(nèi)聲明的自動(dòng)變量的值是隨機(jī)的,除非它被顯式初始化,而在函數(shù)體外被聲明的自動(dòng)變量也會(huì)被初始化為0); 靜態(tài)全局變量在聲明它的整個(gè)文件都是可見的,而在文件之外是不可見的; 靜態(tài)變量都在全局?jǐn)?shù)據(jù)區(qū)分配內(nèi)存,包括后面將要提到的靜態(tài)局部變量。對(duì)于一個(gè)完整的程序,在內(nèi)存中的分布情況如下圖:


代碼區(qū) //low address


全局?jǐn)?shù)據(jù)區(qū)

堆區(qū)

棧區(qū) //high address


一般程序把新產(chǎn)生的動(dòng)態(tài)數(shù)據(jù)存放在堆區(qū),函數(shù)內(nèi)部的自動(dòng)變量存放在棧區(qū)。自動(dòng)變量一般會(huì)隨著函數(shù)的退出而釋放空間,靜態(tài)數(shù)據(jù)(即使是函數(shù)內(nèi)部的靜 態(tài)局部變量)也存放在全局?jǐn)?shù)據(jù)區(qū)。全局?jǐn)?shù)據(jù)區(qū)的數(shù)據(jù)并不會(huì)因?yàn)楹瘮?shù)的退出而釋放空間。細(xì)心的讀者可能會(huì)發(fā)現(xiàn),Example 1中的代碼中將 static int n; //定義靜態(tài)全局變量 改為 int n; //定義全局變量 程序照樣正常運(yùn)行。 的確,定義全局變量就可以實(shí)現(xiàn)變量在文件中的共享,但定義靜態(tài)全局變量還有以下好處: 靜態(tài)全局變量不能被其它文件所用; 其它文件中可以定義相同名字的變量,不會(huì)發(fā)生沖突; 您可以將上述示例代碼改為如下:


//Example 2 //File1


#include <iostream.h>


void fn();


static int n; //定義靜態(tài)全局變量


void main()


{ n=20; cout<<n<<endl; fn(); }


//File2


#include <iostream.h>


extern int n;


void fn()


{ n++; cout<<n<<endl; }


編譯并運(yùn)行Example 2,您就會(huì)發(fā)現(xiàn)上述代碼可以分別通過編譯,但運(yùn)行時(shí)出現(xiàn)錯(cuò)誤。


試著將 static int n; //定義靜態(tài)全局變量 改為 int n;


//定義全局變量 再次編譯運(yùn)行程序,


細(xì)心體會(huì)全局變量和靜態(tài)全局變量的區(qū)別。


注意:全局變量和全局靜態(tài)變量的區(qū)別


1)全局變量是不顯式用static修飾的全局變量,但全局變量默認(rèn)是動(dòng)態(tài)的,作用域是整個(gè)工程,在一個(gè)文件內(nèi)定義的全局變量,在另一個(gè)文件中,通過extern 全局變量名的聲明,就可以使用全局變量。


2)全局靜態(tài)變量是顯式用static修飾的全局變量,作用域是聲明此變量所在的文件,其他的文件即使用extern聲明也不能使用。


3)文件作用域下聲明的const的常量默認(rèn)為static存儲(chǔ)類型。

————————————————

版權(quán)聲明:本文為CSDN博主「zzhays」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。

黑馬程序員匠心之作|C++教程從0到1入門編程,學(xué)習(xí)編程不再難的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
江油市| 石嘴山市| 桑日县| 龙州县| 五莲县| 固原市| 河间市| 天峻县| 武川县| 闽侯县| 和龙市| 冕宁县| 唐山市| 新龙县| 大方县| 大宁县| 临漳县| 府谷县| 兰西县| 寻甸| 苗栗市| 泾阳县| 长沙县| 和龙市| 景东| 垣曲县| 电白县| 三亚市| 温州市| 揭西县| 吉首市| 营口市| 都江堰市| 大足县| 宜宾县| 东阳市| 穆棱市| 嘉善县| 阿拉善右旗| 丰城市| 临江市|