0

重複の可能性:
レジスタ変数のアドレス

register int yy = 6;
int * myptr = &yy;
cout<<myptr<<" "<<&yy<<" "<<*myptr<<" "<<yy<<endl;

Deitel and Deitel third edition C++ how to program : ページ # 307 の最後の行には、「アドレス演算子は、ストレージ クラス レジスタで宣言された変数には適用できない」と記載されています。上記のコードはどのように表示されますか: 0x28ff24 0x28ff24 6 6

register ストレージ クラスを使用した変数へのポインターについて何か不足していますか?

4

3 に答える 3

4

registerコードが のアドレスを取得しているため、コンパイラは要求を無視していますyy

于 2012-11-18T14:07:36.260 に答える
2

あなたの本は古くなっています。

最新の C++ では、registerキーワードの使用は推奨されておらず、宣言には影響しません (変数が頻繁に使用される可能性があるというコンパイラへのヒントとして機能する以外に)。変数のアドレスを取得することを妨げるものではありません。

C にはその制限があります。おそらくC++の古いバージョンもそうでしたが、それを確認できる歴史的な文書はありません。

于 2012-11-18T14:41:48.967 に答える
0

レジスタ変数のアドレスの重複

これとは別に、コンパイラの1つに関する問題に関するIBMのドキュメントは次のとおりです。

http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Fregdef.htm

于 2012-11-18T14:10:43.550 に答える