最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解C++中存儲(chǔ)類的使用

 更新時(shí)間:2022年12月28日 14:09:15   作者:額………………  
存儲(chǔ)類定義?C++?程序中變量/函數(shù)的范圍(可見性)和生命周期。這些說(shuō)明符放置在它們所修飾的類型之前。auto、register、static、extern和mutable是C++程序中常用的存儲(chǔ)類,本文主要介紹了它們的使用方法,需要的可以參考一下

存儲(chǔ)類定義 C++ 程序中變量/函數(shù)的范圍(可見性)和生命周期。這些說(shuō)明符放置在它們所修飾的類型之前。下面列出 C++ 程序中可用的存儲(chǔ)類:

  • auto
  • register
  • static
  • extern
  • mutable

auto 存儲(chǔ)類

在C++11 中, auto 關(guān)鍵字不再是C++存儲(chǔ)類說(shuō)明符。從C++11開始,auto 關(guān)鍵字聲明一個(gè)變量,該變量的類型是從其聲明中的初始化表達(dá)式推導(dǎo)出來(lái)的。

auto 存儲(chǔ)類是所有局部變量默認(rèn)的存儲(chǔ)類。

{
   int mount;
   auto int month;
}

上面的實(shí)例定義了兩個(gè)帶有相同存儲(chǔ)類的變量,auto 只能用在函數(shù)內(nèi),即 auto 只能修飾局部變量。

register 存儲(chǔ)類

register 存儲(chǔ)類用于定義存儲(chǔ)在寄存器中而不是 RAM 中的局部變量。這意味著變量的最大尺寸等于寄存器的大?。ㄍǔJ且粋€(gè)詞),且不能對(duì)它應(yīng)用一元的 '&' 運(yùn)算符(因?yàn)樗鼪](méi)有內(nèi)存位置)。

{
   register int  miles;
}

寄存器只用于需要快速訪問(wèn)的變量,比如計(jì)數(shù)器。還應(yīng)注意的是,定義 'register' 并不意味著變量將被存儲(chǔ)在寄存器中,它意味著變量可能存儲(chǔ)在寄存器中,這取決于硬件和實(shí)現(xiàn)的限制。

static 存儲(chǔ)類

static 存儲(chǔ)類指示編譯器在程序的生命周期內(nèi)保持局部變量的存在,而不需要在每次它進(jìn)入和離開作用域時(shí)進(jìn)行創(chuàng)建和銷毀。因此,使用 static 修飾局部變量可以在函數(shù)調(diào)用之間保持局部變量的值。

static 修飾符也可以應(yīng)用于全局變量。當(dāng) static 修飾全局變量時(shí),會(huì)使變量的作用域限制在聲明它的文件內(nèi)。

在 C++ 中,當(dāng) static 用在類數(shù)據(jù)成員上時(shí),會(huì)導(dǎo)致僅有一個(gè)該成員的副本被類的所有對(duì)象共享。

#include <iostream>
 
// 函數(shù)聲明 
void func(void);
 
static int count = 10; /* 全局變量 */
 
int main()
{
    while(count--)
    {
       func();
    }
    return 0;
}
// 函數(shù)定義
void func( void )
{
    static int i = 5; // 局部靜態(tài)變量
    i++;
    std::cout << "變量 i 為 " << i ;
    std::cout << " , 變量 count 為 " << count << std::endl;
}

嘗試一下

當(dāng)上面的代碼被編譯和執(zhí)行時(shí),它會(huì)產(chǎn)生下列結(jié)果:

變量 i 為 6 , 變量 count 為 9
變量 i 為 7 , 變量 count 為 8
變量 i 為 8 , 變量 count 為 7
變量 i 為 9 , 變量 count 為 6
變量 i 為 10 , 變量 count 為 5
變量 i 為 11 , 變量 count 為 4
變量 i 為 12 , 變量 count 為 3
變量 i 為 13 , 變量 count 為 2
變量 i 為 14 , 變量 count 為 1
變量 i 為 15 , 變量 count 為 0

extern 存儲(chǔ)類

extern 存儲(chǔ)類用于提供一個(gè)全局變量的引用,全局變量對(duì)所有的程序文件都是可見的。當(dāng)您使用 'extern' 時(shí),對(duì)于無(wú)法初始化的變量,會(huì)把變量名指向一個(gè)之前定義過(guò)的存儲(chǔ)位置。

當(dāng)您有多個(gè)文件且定義了一個(gè)可以在其他文件中使用的全局變量或函數(shù)時(shí),可以在其他文件中使用 extern 來(lái)得到已定義的變量或函數(shù)的引用??梢赃@么理解,extern 是用來(lái)在另一個(gè)文件中聲明一個(gè)全局變量或函數(shù)。

extern 修飾符通常用于當(dāng)有兩個(gè)或多個(gè)文件共享相同的全局變量或函數(shù)的時(shí)候,如下所示:

第一個(gè)文件:main.cpp

#include <iostream>
 
int count ;
extern void write_extern();
 
int main()
{
   count = 5;
   write_extern();
}

第二個(gè)文件:support.cpp

#include <iostream>
 
extern int count;
 
void write_extern(void)
{
   std::cout << "Count is " << count << std::endl; 
} 

在這里,第二個(gè)文件中的 extern 關(guān)鍵字用于聲明已經(jīng)在第一個(gè)文件 main.cpp 中定義的 count?,F(xiàn)在 ,編譯這兩個(gè)文件,如下所示:

$g++ main.cpp support.cpp -o write

這會(huì)產(chǎn)生 write 可執(zhí)行程序,嘗試執(zhí)行 write,它會(huì)產(chǎn)生下列結(jié)果:

$ ./write
Count is 5

mutable 存儲(chǔ)類

mutable 說(shuō)明符僅適用于類的對(duì)象,這將在本教程的最后進(jìn)行講解。它允許對(duì)象的成員替代常量。也就是說(shuō),mutable 成員可以通過(guò) const 成員函數(shù)修改。

到此這篇關(guān)于詳解C++中存儲(chǔ)類的使用的文章就介紹到這了,更多相關(guān)C++存儲(chǔ)類內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • QT?UDP網(wǎng)絡(luò)編程實(shí)現(xiàn)簡(jiǎn)單消息傳輸

    QT?UDP網(wǎng)絡(luò)編程實(shí)現(xiàn)簡(jiǎn)單消息傳輸

    這篇文章主要為大家詳細(xì)介紹了QT?UDP網(wǎng)絡(luò)編程實(shí)現(xiàn)簡(jiǎn)單消息傳輸,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • C語(yǔ)言代碼實(shí)現(xiàn)推箱子小游戲

    C語(yǔ)言代碼實(shí)現(xiàn)推箱子小游戲

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言代碼實(shí)現(xiàn)推箱子小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • 用C語(yǔ)言實(shí)現(xiàn)掃雷小程序

    用C語(yǔ)言實(shí)現(xiàn)掃雷小程序

    這篇文章主要為大家詳細(xì)介紹了用C語(yǔ)言實(shí)現(xiàn)掃雷小程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C++標(biāo)準(zhǔn)模版庫(kù)(STL)之vector容器詳解

    C++標(biāo)準(zhǔn)模版庫(kù)(STL)之vector容器詳解

    vector的功能和水桶一樣,就是用來(lái)裝東西的,并且vector還提供了迭代器來(lái)很方便的訪問(wèn)這些數(shù)據(jù),下面就讓我們一起看下如何使用C++的vector吧
    2023-03-03
  • VC解析XML文件-CMarkup的使用詳解

    VC解析XML文件-CMarkup的使用詳解

    本篇文章是對(duì)VC解析XML文件-CMarkup的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C++?如何將Lambda轉(zhuǎn)換成函數(shù)指針

    C++?如何將Lambda轉(zhuǎn)換成函數(shù)指針

    這篇文章主要介紹了C++?如何將Lambda轉(zhuǎn)換成函數(shù)指針,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之順序數(shù)組的實(shí)現(xiàn)

    C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之順序數(shù)組的實(shí)現(xiàn)

    這篇文章主要介紹了C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之順序數(shù)組的實(shí)現(xiàn)的相關(guān)資料,這里提供實(shí)現(xiàn)實(shí)例,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下
    2017-08-08
  • C++數(shù)據(jù)模型應(yīng)用在QML委托代理機(jī)制中

    C++數(shù)據(jù)模型應(yīng)用在QML委托代理機(jī)制中

    這篇文章主要介紹了在QML委托代理機(jī)制中使用C++數(shù)據(jù)模型,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • C語(yǔ)言整形提升舉例詳解

    C語(yǔ)言整形提升舉例詳解

    對(duì)于整形提升,高位需要補(bǔ)位,那么補(bǔ)什么呢,無(wú)符號(hào)數(shù)高位補(bǔ)0,有符號(hào)數(shù)高位補(bǔ)1,下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言整形提升的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • StretchBlt函數(shù)和BitBlt函數(shù)用法案例詳解

    StretchBlt函數(shù)和BitBlt函數(shù)用法案例詳解

    這篇文章主要介紹了StretchBlt函數(shù)和BitBlt函數(shù)用法案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08

最新評(píng)論

建德市| 牙克石市| 嵊泗县| 平远县| 屏山县| 农安县| 乐昌市| 濮阳市| 张北县| 霍邱县| 怀化市| 秦安县| 张家界市| 浪卡子县| 新河县| 东明县| 泾川县| 科技| 佳木斯市| 汉川市| 柯坪县| 安溪县| 开封市| 嘉鱼县| 仁化县| 肇庆市| 重庆市| 乌拉特中旗| 凤山市| 齐齐哈尔市| 西华县| 神农架林区| 桃源县| 宿松县| 辽中县| 西盟| 元阳县| 开阳县| 新郑市| 万荣县| 尖扎县|