我正在使用此代码获取'b'变量的地址。这是一种做法吗?
printf("%p \n",&r[1].b);
r被声明为存储“C”类型对象的数组。类型C的对象具有变量a,b和x。我正在尝试获取b的地址,这是一个int。
另一个问题..是否可以概括代码,以便我可以获取并打印任何对象的地址,无论其类型如何?
答案 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;的一些实现会那样做。