C++ register關鍵字


轉載於:http://blog.sina.com.cn/s/blog_6a1837e90101128k.html

register關鍵字請求編譯器盡可能的將變量存在CPU內部寄存器中,而不是通過內存尋址訪問,以提高效率。注意是盡可能,不是絕對。CPU的寄存器優先,所以如果定義了很多register變量時,不能全部放入寄存器。

register寄存器存儲變量的訪問速度快。

register修飾符暗示編譯程序相應的變量將頻繁地使用,如果可能的話,應將其保存在CPU的寄存器中,以加快其存儲速度。

 

注意點:

register變量必須是能夠被CPU所接受的類型。這通常意味着register變量必須是一個單個的值,並且長度應該小於或者等於整型的長度。不過,有些機器的寄存器也能存放浮點數。

因為register變量可能不存放在內存中,所以不能用”&“來獲取register變量的地址。

由於寄存器的數量優先,而且某些寄存器只能接受特定類型的數據(如指針和浮點數),因此,真正起作用的register修飾符的數目和類型都依賴於運行程序的機器,而任何多余的register修飾符都將被編譯程序所忽略。

在某些情況下,把變量保存在寄存器中反而會江都程序的運行速度。因為被占用的寄存器不能再用於其它目的;或者變量被使用的次數不夠多,不足以裝入和存儲變量所帶來的額外開銷。

register僅僅是暗示而不是命令。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM