尝试打印作为数组元素的对象变量的地址

时间:2013-10-03 23:27:12

标签: c++ arrays memory reference

我正在使用此代码获取'b'变量的地址。这是一种做法吗?

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

r被声明为存储“C”类型对象的数组。类型C的对象具有变量a,b和x。我正在尝试获取b的地址,这是一个int。

另一个问题..是否可以概括代码,以便我可以获取并打印任何对象的地址,无论其类型如何?

1 个答案:

答案 0 :(得分:0)

您的代码看起来不错。 要概括,您需要一个模板

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

或者,一个宏:

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

这些在大多数简单情况下都有效。 当“T”超载operator&amp;()时会更麻烦 - 你必须做更多的模板技巧来解决这个问题。 std :: vector&lt;&gt;的一些实现会那样做。