プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。whatpyonです。

素朴な疑問です。

Cで、registerを伴ったオブジェクトに対して、&を使えないのはなぜですか?

C++では使用可になっているようですが。

A 回答 (2件)

register記憶クラス指定子は、そのオブジェクトへのアクセスを可能な限り高速に行えるようにすることを示唆するためのものです。


実現方法は、必ずしもレジスタへ割付けである必要はありませんが、普通はプロセッサの汎用レジスタを使用します。汎用レジスタは、通常アドレスを持たない(持つものもある)ので、&演算子を使用することができません。

ちなみに、C++のregister記憶クラス指定子は、C言語との互換性のためだけに用意されたもので、auto記憶クラス指定子と同義ですから、&演算子を使うことができます。
    • good
    • 0
この回答へのお礼

お返事が遅れて大変申し訳ございませんでした。
参考となる回答をありがとうございました。

お礼日時:2006/10/09 23:39

register を指定すると、なるべくレジスタに変数を割り当てる


(なるべくなので、かならず割り当てられるということではありません)ようにコンパイルされます。
レジスタは、一般的なメモリではないので、メモリに割り当てられた変数のようにアドレスを取り出すことができないのです。
    • good
    • 0
この回答へのお礼

お返事が遅れて大変申し訳ございませんでした。
参考となる回答をありがとうございました。

お礼日時:2006/10/09 23:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!