このコードを使用して、「b」変数のアドレスを取得しています。これはそれを行う方法ですか?
printf("%p \n",&r[1].b);
r は、'C' 型のオブジェクトを格納する配列として宣言されています。タイプ C のオブジェクトには、変数 a、b、および x があります。int である b のアドレスを取得しようとしています。
別の質問..タイプに関係なく、オブジェクトのアドレスを取得して出力できるようにコードを一般化することは可能ですか?
あなたのコードは問題ないようです。一般化するには、テンプレートが必要です
template <class T> void printAddressOf(T const &t)
{
printf("%p \n", &t);
}
または、マクロ:
#define PRINTADDRESS(t) (printf("%p \n", &(t)))
これらは、ほとんどの単純なケースで機能します。"T" が operator&() をオーバーロードすると、さらに問題が発生します。これを回避するには、さらにテンプレートのトリックを実行する必要があります。std::vector<> の一部の実装はそれを行います。