亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

解析static在C和C++中的用法以及區(qū)別

 更新時(shí)間:2013年08月20日 10:08:56   作者:  
以下是對(duì)static在C和C++中的用法以及區(qū)別進(jìn)行了詳細(xì)的分析介紹。需要的朋友可以過(guò)來(lái)參考下

static主要有三個(gè)作用:
(1)局部靜態(tài)變量
(2)外部靜態(tài)變量/函數(shù)
(3)靜態(tài)數(shù)據(jù)成員/成員函數(shù)
前兩種C和C++都有,第三種僅在C++中有,下面分別作以下介紹:

一、局部靜態(tài)變量
在C/C++中, 局部變量按照存儲(chǔ)形式可分為三種auto, static, register。其中register不常用到,下面主要說(shuō)說(shuō)auto和static的區(qū)別。

1. 存儲(chǔ)空間分配和生存周期不同
auto類型局部變量就是普通的局部變量(不加修飾的局部變量默認(rèn)為該類型)。該類型局部變量存儲(chǔ)在棧上,在動(dòng)態(tài)存儲(chǔ)區(qū),生命周期僅限于定義它的函數(shù),函數(shù)結(jié)束,它就自動(dòng)釋放。static類型局部變量存儲(chǔ)在靜態(tài)存儲(chǔ)區(qū),在程序整個(gè)運(yùn)行期間都不釋放。兩者之間的作用域相同,但生存期不同。

2. static局部變量在所處模塊在初次運(yùn)行時(shí)進(jìn)行初始化工作,且只操作一次。

3. 對(duì)于局部靜態(tài)變量,如果不賦初值,編譯期會(huì)自動(dòng)賦初值0或空字符,而auto類型的初值是不確定的。(對(duì)于C++中的class對(duì)象例外,class的對(duì)象實(shí)例如果不初始化,則會(huì)自動(dòng)調(diào)用默認(rèn)構(gòu)造函數(shù),不管是否是static類型)

特點(diǎn): static局部變量的”記憶性”與生存期的”全局性”

二、外部靜態(tài)變量/函數(shù)
在C中 static有了第二種含義:用來(lái)表示不能被其它文件訪問(wèn)的全局變量和函數(shù)。但為了限制全局變量/函數(shù)的作用域, 函數(shù)或變量前加static使得函數(shù)成為靜態(tài)函數(shù)。但此處“static”的含義不是指存儲(chǔ)方式,而是指對(duì)函數(shù)的作用域僅局限于本文件(所以又稱內(nèi)部函 數(shù))。注意此時(shí), 對(duì)于外部(全局)變量, 不論是否有static限制, 它的存儲(chǔ)區(qū)域都是在靜態(tài)存儲(chǔ)區(qū),生存期都是全局的. 此時(shí)的static只是起作用域限制作用, 限定作用域在本模塊(文件)內(nèi)部.使用內(nèi)部函數(shù)的好處是:不同的人編寫(xiě)不同的函數(shù)時(shí),不用擔(dān)心自己定義的函數(shù),是否會(huì)與其它文件中的函數(shù)同名。

三、靜態(tài)數(shù)據(jù)成員/成員函數(shù)(C++特有)
C+ +重用了這個(gè)關(guān)鍵字,并賦予它與前面不同的第三種含義:表示屬于一個(gè)類而不是屬于此類的任何特定對(duì)象的變量和函數(shù). 這是與普通成員函數(shù)的最大區(qū)別,也是其應(yīng)用所在, 比如在對(duì)某一個(gè)類的對(duì)象進(jìn)行計(jì)數(shù)時(shí), 計(jì)數(shù)生成多少個(gè)類的實(shí)例,就可以用到靜態(tài)數(shù)據(jù)成員. 在這里面, static既不是限定作用域的, 也不是擴(kuò)展生存期的作用, 而是指示變量/函數(shù)在此類中的唯一性. 這也是”屬于一個(gè)類而不是屬于此類的任何特定對(duì)象的變量和函數(shù)”的含義. 因?yàn)樗菍?duì)整個(gè)類來(lái)說(shuō)是唯一的,因此不可能屬于某一個(gè)實(shí)例對(duì)象的. (針對(duì)靜態(tài)數(shù)據(jù)成員而言, 成員函數(shù)不管是否是static, 在內(nèi)存中只有一個(gè)副本, 普通成員函數(shù)調(diào)用時(shí), 需要傳入this指針, static成員函數(shù)調(diào)用時(shí), 沒(méi)有this指針. )

相關(guān)文章

  • Linux網(wǎng)絡(luò)編程之UDP Socket程序示例

    Linux網(wǎng)絡(luò)編程之UDP Socket程序示例

    這篇文章主要介紹了Linux網(wǎng)絡(luò)編程之UDP Socket程序示例,有助于讀者在實(shí)踐中掌握UDP協(xié)議的原理及應(yīng)用方法,需要的朋友可以參考下
    2014-08-08
  • C++中指向結(jié)構(gòu)體變量的指針

    C++中指向結(jié)構(gòu)體變量的指針

    結(jié)構(gòu)體變量的指針就是該變來(lái)那個(gè)所占據(jù)的內(nèi)存段的起始地址??梢栽O(shè)一個(gè)指針變量,來(lái)指向一個(gè)結(jié)構(gòu)體變量,此時(shí)該指針變量的值是結(jié)構(gòu)體變量的起始地址
    2013-10-10
  • MFC中Radio Button的用法詳解

    MFC中Radio Button的用法詳解

    這篇文章主要介紹了MFC中Radio Button的用法,需要的朋友可以參考下
    2014-07-07
  • C語(yǔ)言中bool變量的深入理解

    C語(yǔ)言中bool變量的深入理解

    C語(yǔ)言中沒(méi)有BOOL類型變量,它是C++獨(dú)有的,由于使用BOOL類型可以使代碼更具有可讀性,下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言中bool變量的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • C++實(shí)現(xiàn)LeetCode(13.羅馬數(shù)字轉(zhuǎn)化成整數(shù))

    C++實(shí)現(xiàn)LeetCode(13.羅馬數(shù)字轉(zhuǎn)化成整數(shù))

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(13.羅馬數(shù)字轉(zhuǎn)化成整數(shù)),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • c++實(shí)現(xiàn)md5加密的代碼

    c++實(shí)現(xiàn)md5加密的代碼

    這篇文章主要介紹了c++實(shí)現(xiàn)md5加密的實(shí)例代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • C++制作鼠標(biāo)連點(diǎn)器實(shí)例代碼

    C++制作鼠標(biāo)連點(diǎn)器實(shí)例代碼

    大家好,本篇文章主要講的是C++制作鼠標(biāo)連點(diǎn)器實(shí)例代碼,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • C++ const引用、臨時(shí)變量 引用參數(shù)詳解

    C++ const引用、臨時(shí)變量 引用參數(shù)詳解

    下面小編就為大家?guī)?lái)一篇C++ const引用、臨時(shí)變量 引用參數(shù)詳解。小編覺(jué)得挺不錯(cuò)的現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01
  • C++實(shí)現(xiàn)基數(shù)排序的方法詳解

    C++實(shí)現(xiàn)基數(shù)排序的方法詳解

    本篇文章是對(duì)使用C++實(shí)現(xiàn)基數(shù)排序的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C語(yǔ)言如何利用ASCII碼表統(tǒng)計(jì)字符串每個(gè)字符出現(xiàn)的次數(shù)

    C語(yǔ)言如何利用ASCII碼表統(tǒng)計(jì)字符串每個(gè)字符出現(xiàn)的次數(shù)

    這篇文章主要介紹了C語(yǔ)言如何利用ASCII碼表統(tǒng)計(jì)字符串每個(gè)字符出現(xiàn)的次數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01

最新評(píng)論