1. 程式人生 > >C語言暫存器變數register

C語言暫存器變數register

    用register宣告的變數是暫存器變數,是存放在CPU的暫存器裡的。而我們平時宣告的變數是存放在記憶體中的。雖說記憶體的速度已經很快了,不過跟暫存器比起來還是差得遠。
    暫存器變數和普通變數比起來速度上的差異很大,畢竟CPU的速度遠遠大於記憶體的速度。暫存器有這麼兩個特點,一個是運算速度快,一個是不能取地址。
    學過C的都應該知道每一個變數在記憶體中都佔有一定的的空間,來存放資料。但是在暫存器中的變數是不能取地址的,編譯器會報錯。

來我們看看暫存器變數和普通話的變數的速度到底能差多少。

這段程式碼用了0.952秒執行

    這段程式碼執行用了0.952秒

這段程式碼用了0.094秒執行

    這段程式碼執行用了0.094秒

差距如此之大。

實際使用時,底層硬體環境的實際情況對暫存器變數的使用會有一些限制。每個函式中只有很少的變數可以儲存在暫存器中,且只允許某些型別的變數。但是,過量的暫存器宣告並沒有什麼害處,這是因為編譯器可以忽略過量的或者不支援的暫存器變數宣告。另外,無論暫存器變數實際上是不是存放在暫存器中,它的地址都是不能訪問的。在不同的機器中,對暫存器變數的數目和型別的具體限制也是不同的。
——《C程式設計語言(第二版) Brain W.Kernighan & Dennis M.Ritchie》