欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

C++中如何使用static關(guān)鍵字

C++ 中如何使用static關(guān)鍵字,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

公司主營(yíng)業(yè)務(wù):成都網(wǎng)站制作、網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)建站是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。創(chuàng)新互聯(lián)建站推出市中免費(fèi)做網(wǎng)站回饋大家。

1、靜態(tài)全局變量

在全局變量前,加上C++ static關(guān)鍵字,該變量就被定義成為一個(gè)靜態(tài)全局變量。我們先舉一個(gè)靜態(tài)全局變量的例子,如下:

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):

  • C++ lambda函數(shù)在程序開發(fā)中作用體現(xiàn)

  • C++對(duì)象傳遞實(shí)際應(yīng)用問題解疑

  • C++類繼承基本概念解析

  • C++解析#pragma指令具體操作方法詳解

  • C++ const變量使用技巧總結(jié)

該變量在全局?jǐn)?shù)據(jù)區(qū)分配內(nèi)存;

未經(jīng)初始化的靜態(tài)全局變量會(huì)被程序自動(dòng)初始化為0(自動(dòng)變量的值是隨機(jī)的,除非它被顯式初始化);

靜態(tài)全局變量在聲明它的整個(gè)文件都是可見的,而在文件之外是不可見的;  

靜態(tài)變量都在全局?jǐn)?shù)據(jù)區(qū)分配內(nèi)存,包括后面將要提到的靜態(tài)局部變量。

一般程序的由new產(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ò)誤。 試著將

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

  2. int n; //定義全局變量 再次編譯運(yùn)行程序,
    細(xì)心體會(huì)全局變量和靜態(tài)全局變量的區(qū)別。 

2、靜態(tài)局部變量

在局部變量前,加上C++ static關(guān)鍵字,該變量就被定義成為一個(gè)靜態(tài)局部變量。

我們先舉一個(gè)靜態(tài)局部變量的例子,如下:

//Example 3   #include <iostream.h> void fn();   void main() { fn(); fn(); fn(); }   void fn() { static n=10; cout<<n<<endl; n++; }

通常,在函數(shù)體內(nèi)定義了一個(gè)變量,每當(dāng)程序運(yùn)行到該語(yǔ)句時(shí)都會(huì)給該局部變量分配棧內(nèi)存。但隨著程序退出函數(shù)體,系統(tǒng)就會(huì)收回棧內(nèi)存,局部變量也相應(yīng)失效。

但有時(shí)候我們需要在兩次調(diào)用之間對(duì)變量的值進(jìn)行保存。通常的想法是定義一個(gè)全局變量來(lái)實(shí)現(xiàn)。但這樣一來(lái),變量已經(jīng)不再屬于函數(shù)本身了,不再僅受函數(shù)的控制,給程序的維護(hù)帶來(lái)不便。
靜態(tài)局部變量正好可以解決這個(gè)問題。靜態(tài)局部變量保存在全局?jǐn)?shù)據(jù)區(qū),而不是保存在棧中,每次的值保持到下一次調(diào)用,直到下次賦新值。

靜態(tài)局部變量有以下特點(diǎn):

該變量在全局?jǐn)?shù)據(jù)區(qū)分配內(nèi)存;

靜態(tài)局部變量在程序執(zhí)行到該對(duì)象的聲明處時(shí)被***初始化,即以后的函數(shù)調(diào)用不再進(jìn)行初始化;

靜態(tài)局部變量一般在聲明處初始化,如果沒有顯式初始化,會(huì)被程序自動(dòng)初始化為0;

它始終駐留在全局?jǐn)?shù)據(jù)區(qū),直到程序運(yùn)行結(jié)束。但其作用域?yàn)榫植孔饔糜颍?dāng)定義它的函數(shù)或語(yǔ)句塊結(jié)束時(shí),其作用域隨之結(jié)束;

3、靜態(tài)函數(shù)

在函數(shù)的返回類型前加上C++ static關(guān)鍵字,函數(shù)即被定義為靜態(tài)函數(shù)。靜態(tài)函數(shù)與普通函數(shù)不同,它只能在聲明它的文件當(dāng)中可見,不能被其它文件使用。

靜態(tài)函數(shù)的例子:

//Example 4   #include <iostream.h> static void fn();  //聲明靜態(tài)函數(shù)   void main() { fn(); }   void fn()  //定義靜態(tài)函數(shù)   { int n=10; cout<<n<<endl; }

定義靜態(tài)函數(shù)的好處:

靜態(tài)函數(shù)不能被其它文件所用;

其它文件中可以定義相同名字的函數(shù),不會(huì)發(fā)生沖突;

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。

網(wǎng)站欄目:C++中如何使用static關(guān)鍵字
URL標(biāo)題:http://chinadenli.net/article20/piggjo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)App設(shè)計(jì)微信公眾號(hào)企業(yè)建站品牌網(wǎng)站制作網(wǎng)站改版

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司