欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++中register關(guān)鍵字舉例詳解

 更新時間:2023年03月08日 10:14:05   作者:允彥  
register用來聲明變量,然后聲明出來的變量是直接放在cpu的寄存器當(dāng)中,而非就是通過內(nèi)存尋址訪問,這樣效率更高,下面這篇文章主要給大家介紹了關(guān)于C++中register關(guān)鍵字的相關(guān)資料,需要的朋友可以參考下

register 簡介:

register 就像是漢語和英語中的形容詞(不要問為什么只有兩種語言,因?yàn)樾【幹粫@兩種),在 C++ 中 register 是用來修飾變量的。

register 的作用:

register 聲明的變量是直接放在cpu的寄存器當(dāng)中,而非就是通過內(nèi)存尋址訪問,這樣就可以大大的提高程序的運(yùn)行效率。

總而言之,寫上不會虧。

還需要注意,register 聲明變量只能在主函數(shù)或自定義內(nèi)部。注意:是內(nèi)部,定義在外面是會報錯的。

for(int i=1;i<=1000000;i++)
{
	......
}
 
for(register int i=1;i<=1000000;i++)
{
	......
}

在第一個 for 循環(huán)中,變量 i 存儲在內(nèi)存中,cpu 每次要從內(nèi)存中取出變量 i,這樣 cpu 就要來回讀取10000次,只是很低效的。

而在第二個 for 循環(huán)中,cpu每次都會直接去寄存器上讀取變量i,而不用再去內(nèi)存讀取,因此,代碼的效率也會大大提高。

補(bǔ)充知識:register函數(shù)的限制

1、register變量必須是能被CPU所接受的類型。這通常意味著register變量必須是一個單個的值,并且長度應(yīng)該小于或者等于整型的長度。不過,有些機(jī)器的寄存器也能存放浮點(diǎn)數(shù)。

2、因?yàn)閞egister變量可能不存放在內(nèi)存中,所以不能用“&”來獲取register變量的地址。

3、由于寄存器的數(shù)量有限,而且某些寄存器只能接受特定類型的數(shù)據(jù)(如指針和浮點(diǎn)數(shù)),因此真正起作用的register修飾符的數(shù)目和類型都依賴于運(yùn)行程序的機(jī)器,而任何多余的register修飾符都將被編譯程序所忽略。

4、只有局部自動變量和形式參數(shù)可以作為寄存器變量,其它(如全局變量)不行。

5、局部靜態(tài)變量不能定義為寄存器變量。不能寫成:register static int a, b, c;

6、在某些情況下,把變量保存在寄存器中反而會降低程序的運(yùn)行速度。因?yàn)楸徽加玫募拇嫫鞑荒茉儆糜谄渌康模换蛘咦兞勘皇褂玫拇螖?shù)不夠多,不足以裝入和存儲變量所帶來的額外開銷。

7、早期的C編譯程序不會把變量保存在寄存器中,除非你命令它這樣做,這時register修飾符是C語言的一種很有價值的補(bǔ)充。然而,隨著編譯程序設(shè)計(jì)技術(shù)的進(jìn)步,在決定哪些變量應(yīng)該被存到寄存器中時,C編譯環(huán)境能比程序員做出更好的決定。實(shí)際上,許多編譯程序都會忽略register修飾符,因?yàn)楸M管它完全合法,但它僅僅是暗示而不是命令。

總結(jié)

到此這篇關(guān)于C++中register關(guān)鍵字的文章就介紹到這了,更多相關(guān)C++ register關(guān)鍵字內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++實(shí)現(xiàn)獲取指定代碼段的cpu占用

    C++實(shí)現(xiàn)獲取指定代碼段的cpu占用

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)獲取指定代碼段的cpu占用的相關(guān)知識,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,有需要的小伙伴可以參考一下
    2023-12-12
  • C語言責(zé)任鏈模式示例代碼

    C語言責(zé)任鏈模式示例代碼

    大家好,本篇文章主要講的是C語言責(zé)任鏈模式示例代碼,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • C語言實(shí)現(xiàn)學(xué)生選課系統(tǒng)

    C語言實(shí)現(xiàn)學(xué)生選課系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)學(xué)生選課系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • C語言實(shí)現(xiàn)計(jì)算樹的深度的方法

    C語言實(shí)現(xiàn)計(jì)算樹的深度的方法

    這篇文章主要介紹了C語言實(shí)現(xiàn)計(jì)算樹的深度的方法,針對數(shù)據(jù)結(jié)構(gòu)中樹進(jìn)行操作的方法,在算法設(shè)計(jì)中比較常見,需要的朋友可以參考下
    2014-09-09
  • 淺談C++高并發(fā)場景下讀多寫少的優(yōu)化方案

    淺談C++高并發(fā)場景下讀多寫少的優(yōu)化方案

    本文主要介紹了淺談C++高并發(fā)場景下讀多寫少的優(yōu)化方案,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 詳解c++ 繼承

    詳解c++ 繼承

    這篇文章主要介紹了c++ 繼承的相關(guān)資料,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • C++超詳細(xì)講解auto與nullptr的使用

    C++超詳細(xì)講解auto與nullptr的使用

    C++11提供了nullptr用來取代0或者NULL。在C++11之前,使用NULL為空指針賦初值,但NULL其實(shí)就是0,這時會把NULL當(dāng)成0來用;在C++11中,我們在聲明一個變量或?qū)ο?,指定它的類型時,可以不使用變量本身的類型而使用auto替代
    2022-05-05
  • C++集體數(shù)據(jù)交換實(shí)現(xiàn)示例講解

    C++集體數(shù)據(jù)交換實(shí)現(xiàn)示例講解

    這篇文章主要介紹了C++集體數(shù)據(jù)交換實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-11-11
  • C語言中強(qiáng)制類型轉(zhuǎn)換的常見方法

    C語言中強(qiáng)制類型轉(zhuǎn)換的常見方法

    強(qiáng)制類型轉(zhuǎn)換是一種將一個數(shù)據(jù)類型轉(zhuǎn)換為另一個數(shù)據(jù)類型的方法,這篇文章主要為大家整理了C語言中強(qiáng)制類型轉(zhuǎn)換的方法,需要的可以參考一下
    2023-05-05
  • C++實(shí)現(xiàn)彩色飛機(jī)大戰(zhàn)

    C++實(shí)現(xiàn)彩色飛機(jī)大戰(zhàn)

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)彩色飛機(jī)大戰(zhàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-10-10

最新評論