数组地址

时间:2013-06-13 16:13:05

标签: c++ pointers multidimensional-array

如果我定义一个变量:
int (**a)[30];
它是指针。该指针指向一个指向30个整数数组的指针 如何声明或初始化?

int (**a)[10] = new [10][20][30];
int (**a)[10] = && new int[10];  

一切都行不通。

3 个答案:

答案 0 :(得分:4)

直接回答您关于如何初始化a的问题(无论这是否是您真正需要的)

int (**a)[10] = new (int (*)[10]);

我不认为这实际上是你想要的;您可能希望将指针初始化为指向实际数组,并且std::vector方式是更好的方法。

答案 1 :(得分:0)

如果您想要回答问题,那么您可以做这样的事情:

int a[30];
int (*b)[30] = &a;
int (**c)[30] = &b;

但不像其他人评论的那样,它不太可能是你想要的。您可能需要澄清您的基本目标 - 人们只能推测其他目标。


仅仅依照MooingDuck的评论,我实际上可以在没有typedef的情况下看到一种方法,但不能直接:

template <typename T>
T *create(T *const &)
{
    return new T;
}

int (**a)[30] = create(a);

虽然不是很漂亮。

答案 2 :(得分:0)

您希望通过撰写&(&var)获得什么?这相当于address of address of a block of memory。这样做只是为了满足你代码中*的数量是没有意义的。

考虑一下 - 如何获得地址?即使通过一些纯粹的运气或奇怪的语言技巧你也设法做到了,但它无法发挥作用。