如果我定义了一个变量:
int (**a)[30];
它是指针。这个指针指向一个指针,该指针指向一个包含30个整数的数组。
如何声明或初始化它?
int (**a)[10] = new [10][20][30];
int (**a)[10] = && new int[10]; 并不是所有的都能正常工作。
发布于 2013-06-14 01:14:50
对于如何初始化a的问题(无论这是否是您实际需要的),直接答案是
int (**a)[10] = new (int (*)[10]);我不认为这实际上是您想要的;您可能希望将指针初始化为指向实际的数组,无论哪种方式,std::vector都是更好的方法。
发布于 2013-06-14 00:28:44
如果你想要问题的答案,那么你可以这样做:
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-14 01:23:20
你希望通过编写&(&var)得到什么?这相当于address of address of a block of memory。仅仅为了满足代码中的*数量而做这样的事情是没有意义的。
想想看--你怎么才能得到一个地址的地址呢?即使是靠一些纯粹的运气或奇怪的语言技巧,你也不可能成功。
https://stackoverflow.com/questions/17091991
复制相似问题