如果我定义一个变量:
int (**a)[30];
它是指针。该指针指向一个指向30个整数数组的指针
如何声明或初始化?
int (**a)[10] = new [10][20][30];
int (**a)[10] = && new int[10];
一切都行不通。
答案 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
。这样做只是为了满足你代码中*
的数量是没有意义的。
考虑一下 - 如何获得地址?即使通过一些纯粹的运气或奇怪的语言技巧你也设法做到了,但它无法发挥作用。