名詞定義
register
n.
記錄,登記簿,登記,註冊,暫存器
【語言學】語域(即當前語境的最適合語言)
vt.
記錄,登記,註冊,提示,把...掛號
vi.
登記,註冊,掛號
修飾符
register修飾符暗示編譯程式相應的變數將被頻繁地使用,如果可能的話,應將其保存在CPU的暫存器中,以加快其存儲速度。例如下面的記憶體塊拷貝代碼,
/* Procedure for the assignment of structures, */
/* if the C compiler doesn't support this feature */
#ifdef NOSTRUCTASSIGN
memcpy (d, s, i)
{register char *d;
register char *s;
register int i;
while (i--)
*d++ = *s++;
}
#endif
但是使用register修飾符有幾點限制。
首先,register變數必須是能被CPU所接受的類型。這通常意味著register變數必須是一個單個的值,並且長度應該小於或者等於整型的長度。不過,有些機器的暫存器也能存放浮點數。
其次,因為register變數可能不存放在記憶體中,所以不能用“&”來獲取register變數的地址。
由於暫存器的數量有限,而且某些暫存器只能接受特定類型的數據(如指針和浮點數),因此真正起作用的register修飾符的數目和類型都依賴於運行程式的機器,而任何多餘的register修飾符都將被編譯程式所忽略。
在某些情況下,把變數保存在暫存器中反而會降低程式的運行速度。因為被占用的暫存器不能再用於其它目的;或者變數被使用的次數不夠多,不足以裝入和存儲變數所帶來的額外開銷。
早期的C編譯程式不會把變數保存在暫存器中,除非你命令它這樣做,這時register修飾符是C語言的一種很有價值的補充。然而,隨著編譯程式設計技術的進步,在決定哪些變數應該被存到暫存器中時,現在的C編譯環境能比程式設計師做出更好的決定。實際上,許多編譯程式都會忽略register修飾符,因為儘管它完全合法,但它僅僅是暗示而不是命令。
註冊公司
Register是美國較為知名的域名註冊公司,百度公司的域名曾經在此公司註冊,後來由於該公司的安全漏洞導致百度域名被黑,事情的結局是Register公司已經對百度全部損失做出賠償,並正式向百度公司發布公開道歉聲明,對由於自身安全漏洞遭黑客攻擊導致百度域名無法訪問而給百度公司帶來的嚴重影響表示歉意。