"Thinking in C++"レジスタ変数について: "レジスタ変数の使用には制限があります。レジスタ変数のアドレスは取ることも計算することもできません。レジスタ変数はブロック内でのみ宣言できます(グローバルまたは静的なレジスタ変数を持つことはできません)。なぜ私はレジスタ変数のアドレスを取ることができますか?
だから私は、テストにプログラムのこの作品を書いた:
int global = 2;
// error
// register int global2 = 3;
int main() {
register int local2 = 2;
cout << local2 << " " << &local2 << endl;
}
エラーが発生していないとLOCAL2のアドレスがプリントアウトされた++ただしグラムを。だから、なぜ私はエラーなしでアドレスを取ることができますか?
これは単なるコンパイラのヒントです。変数の処理は言語レベルで変更されません。 –
'register'はヒントとしてのみ機能します。変数のアドレスを取得すると、 'register'を使用したかどうかにかかわらず、アドレスを取得します。 – Dmitri
[C++でのキーワード登録](http://stackoverflow.com/questions/3207018/register-keyword-in-c) – deW1