0

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

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

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

另一个问题.. 是否可以概括代码以便我可以获取和打印任何对象的地址,而不管它们的类型如何?

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 回答