0

このコードを使用して、「b」変数のアドレスを取得しています。これはそれを行う方法ですか?

printf("%p \n",&r[1].b);

r は、'C' 型のオブジェクトを格納する配列として宣言されています。タイプ C のオブジェクトには、変数 a、b、および x があります。int である b のアドレスを取得しようとしています。

別の質問..タイプに関係なく、オブジェクトのアドレスを取得して出力できるようにコードを一般化することは可能ですか?

4

1 に答える 1

0

あなたのコードは問題ないようです。一般化するには、テンプレートが必要です

template <class T> void printAddressOf(T const &t)
{
    printf("%p \n", &t);
}

または、マクロ:

#define PRINTADDRESS(t) (printf("%p \n", &(t)))

これらは、ほとんどの単純なケースで機能します。"T" が operator&() をオーバーロードすると、さらに問題が発生します。これを回避するには、さらにテンプレートのトリックを実行する必要があります。std::vector<> の一部の実装はそれを行います。

于 2013-10-04T00:15:48.770 に答える