如果我定义一个变量:
int (**a)[30];
它是指针。该指针指向一个指向 30 个整数数组的指针。
如何声明或初始化它?
int (**a)[10] = new [10][20][30];
int (**a)[10] = && new int[10];
一切都行不通。
如果我定义一个变量:
int (**a)[30];
它是指针。该指针指向一个指向 30 个整数数组的指针。
如何声明或初始化它?
int (**a)[10] = new [10][20][30];
int (**a)[10] = && new int[10];
一切都行不通。
您如何初始化a
(无论这是否是您实际需要的)问题的直接答案是
int (**a)[10] = new (int (*)[10]);
我不认为这实际上是您想要的;您可能想要初始化指针以指向一个实际的数组,并且任何一种方式std::vector
都是更好的方法。
你希望通过写作得到&(&var)
什么?这相当于address of address of a block of memory
. 这样做只是为了满足*
代码中的数量是没有意义的。
想一想——你怎么能得到一个地址的地址?即使你靠一些纯粹的运气或奇怪的语言技巧设法做到了,它也不可能奏效。
如果您想按原样回答问题,那么您可以执行以下操作:
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);
虽然不漂亮。