暫存器變數

2021-08-21 18:22:14 字數 849 閱讀 2459

**:

之前竟然沒聽過c語言還有暫存器,好可憐,我是小白請見諒,哈哈

簡單總結了幾條關於register變數應該知道的東西,如下:

1.暫存器變數可以用來優化加速c語言程式

2.聲名只需在型別前多加register 即可,eg register int quick; (quick 就是乙個整形的暫存器變數)

3.register只是乙個建議型關鍵字,能不能聲名成功還取決於編譯器(建議型的關鍵字還有c++中的 inline),若不幸沒有請求成功,則變數變成乙個普通的自動變數。

4.是無法對乙個register變數取位址的(因為暫存器變數多放在暫存器而非記憶體中,記憶體有位址,而暫存器是無位址的)

5.即便沒有請求成暫存器變數,沒有如願的放入暫存器中,但是,依然不能對他取位址,因為他已經被宣告為register了,就是這麼任性

什麼情況用暫存器變數:

當對乙個變數頻繁被讀寫時,需要反覆訪問記憶體,從而花費大量的訪問時間。為此,c語言提供了一種變數,即暫存器變數。這種變數存放在cpu的暫存器中,使用時,不需要訪問記憶體,而直接從暫存器中讀寫,從而提高效率。暫存器變數的說明符是register。對於迴圈次數較多的迴圈控制變數及迴圈體內反覆使用的變數均可定義為暫存器變數,而迴圈計數是應用暫存器變數的最好候選者。
什麼變數可以宣告為暫存器變數:

. 只有區域性自動變數和形參才可以定義為暫存器變數。因為暫存器變數屬於動態儲存方式,凡需要採用靜態儲存方式的量都不能定義為暫存器變數,包括:模組間全域性變數、模組內全域性變數、區域性static變數。

如:register int res __asm__("ax");

這裡ax是變數res希望使用的暫存器。

暫存器變數

在程式執行時,根據需要到記憶體中相應的 儲存單元中呼叫,如果乙個變數在程式中頻繁使用,例如迴圈變數,那麼,系統就必須多次訪問記憶體中的該單元,影響程式的執行效率。因此,c c 語言還定義了一種變數,不是儲存在記憶體上,而是直接儲存在cpu中的暫存器中,這種變數稱為暫存器變數。暫存器變數的定義形式是 ...

暫存器變數

c語言中的變數按儲存區域可以分為三種 堆疊中的自動變數,普通記憶體中得靜態變數,硬體暫存器變數。由於暫存器變數直接存放在cpu中,而不在記憶體中,所以訪問速度極快。一般應用於需要大量次數訪問的變數。暫存器變數只能存放int char和指標型別的資料,而且暫存器變數不能過多的使用,否則反而會降低運算速...

暫存器變數

c c 語言定義了一種變數,不是儲存在記憶體上,而是直接儲存在 中的暫存器中,稱為暫存器變數 特點 讀取和改變的速度更快,高速 語法形式 register 型別識別符號 變數名 由於受硬體暫存器長度的限制,暫存器變數只能是char int或指標型。暫存器說明符只能用於說明中的變數和函式中的形參,因此...