複製鏈接
請複製以下鏈接發送給好友

寄存器變量

鎖定
在程序運行時,根據需要到內存中相應的存儲單元中調用,如果一個變量在程序中頻繁使用,例如循環變量,那麼,系統就必須多次訪問內存中的該單元,影響程序的執行效率。因此,C語言\C++語言還定義了一種變量,不是保存在內存上,而是直接存儲在CPU中的寄存器中,這種變量稱為寄存器變量。
中文名
寄存器變量
調    用
內存中相應的存儲單元
性    質
變量
寄存器變量的定義形式是:
register 類型標識符 變量名
寄存器是與機器硬件密切相關的,不同類型的計算機,寄存器的數目是不一樣的,通常為2到3個,對於在一個函數中説明的多於2到3個的寄存器變量,C編譯程序會自動地將寄存器變量變為自動變量
由於受硬件寄存器長度的限制,所以寄存器變量只能是char、int或指針型。寄存器説明符只能用於説明函數中的變量和函數中的形參,因此不允許將外部變量靜態變量説明為"register"。
register型變量常用於作為循環控制變量,這是使用它的高速特點的最佳場合。比較下面兩個程序的運算速度。
/* 程序1 */
main ( )
{register int temp, i;for ( i=0; i<=30000; i++ )for ( temp=0; temp<=100; temp++ ) ;printf ("ok\n");}
/* 程序2 */
#include <stdio.h>
int main( )
{int temp, i;for ( i=0; i<=30000; i++ )for ( temp=0; temp<=100; temp++ ) ;printf ("ok\n");}
這兩個程序中,前者使用了兩個寄存器變量,後者使用了兩個自動變量程序除此之外完全一樣。但運行時感覺的執行速度是不同的,前者使用寄存器變量的程序要比後者使用自動變量的程序要快。(如果在Turbo C的環境下運行程序2,則應該將編譯器優化選項"use register variable"開關關上(OFF),否則,編譯器自動優化程序使用寄存器,兩個程序會得到相同的結果。)
由於register變量使用的是硬件CPU中的寄存器,寄存器變量無地址,所以不能使用取地址運算符"&"求寄存器變量的地址。