1

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

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

一切都行不通。

4

3 回答 3

4

您如何初始化a(无论这是否是您实际需要的)问题的直接答案是

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

我不认为这实际上是您想要的;您可能想要初始化指针以指向一个实际的数组,并且任何一种方式std::vector都是更好的方法。

于 2013-06-13T17:14:50.337 回答
0

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

想一想——你怎么能得到一个地址的地址?即使你靠一些纯粹的运气或奇怪的语言技巧设法做到了,它也不可能奏效。

于 2013-06-13T17:23:20.010 回答
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);

虽然不漂亮。

于 2013-06-13T16:28:43.767 回答