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

歡迎光臨散文網(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)遵守國家法律
上杭县| 体育| 元阳县| 内黄县| 凤冈县| 灵台县| 来凤县| 罗定市| 贵港市| 泸州市| 美姑县| 沾益县| 麻江县| 云阳县| 佛山市| 来凤县| 晋州市| 特克斯县| 米泉市| 牟定县| 古丈县| 民权县| 遂昌县| 道真| 宣汉县| 西峡县| 梅河口市| 专栏| 奉节县| 都兰县| 焦作市| 丰镇市| 舟曲县| 长兴县| 墨竹工卡县| 连南| 云林县| 济南市| 高雄县| 东丽区| 楚雄市|