c++ - 指向数组指针的指针

标签 c++ arrays pointers

我有一个变量定义 int (**ff)[4];,它看起来很糟糕。如果我是对的(从 int (*f)[4]; 是一个指向 4 个 int-s 的数组的指针这一事实推断出来的)这是一个指向指向一个数组的指针的指针4 个整数。

现在我尝试初始化这个东西,但我没有成功。初始化 f 很简单 (f = new int[5][4];),但是行 ff = new int*[6][4]; 不工作。 Microsoft Visual Studio Community 2013 在一条错误消息中指出

a value of type "int *(*)[4]" cannot be assigned to an entity of type "int (**)[4]"

我有一种很不好的预感,我真的误会了什么。

编辑:

抱歉,我没有明确说明:我想要的是不仅为一个指针分配内存空间,而且为更多指针分配内存空间,这些指针稍后可以指向一个由 4 个 int 组成的数组。当然,我希望在没有任何其他定义、转换等帮助的情况下将其写在一行中。

最佳答案

我可以(不)看到它仅以这种方式使用:

int (*a)[4] = new int[6][4];
int (**ff)[4] = &a;

int (**ff)[4] 的意思是“指向由四个 int 组成的数组的指针”。这意味着我们必须先有 int (*)[4] - 一个左值,这样我们才能用 operator& 获取它的地址。

另一方面,new int*[6][4]; 将一个指针数组分配给一个由四个指针组成的数组(“外部”数组衰减)。这与第一个完全不同。

我不得不自己动手 cdecl.org关于这个。

编辑:

我刚刚做了这个:

using PTR = int (*)[4];
int (**ff)[4] = new PTR; // hooray, a dynamically allocated pointer!

但是没有类型别名就想不出办法...

实际上,有一个:int (**ff)[4] = new (int (*)[4]),收集自this Q&A .不要忘记,您现在拥有的只是一个动态分配的未初始化指针。

关于c++ - 指向数组指针的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35444501/

相关文章:

c++ - 如何继承一个Qt类?

ios - 如何快速重新使用变量构建数组

c++ - 在嵌套模板特化期间初始化嵌套模板类的静态成员?

c++ - std::vector<Object> 保留方法是否需要 Object 类的复制构造函数?

c - 将 char 数组类型转换为 char **

javascript - 更改 JavaScript 中的数组原型(prototype)

pointers - 如何在GO中获取指向接口(interface)的指针

java - 是否可以指向数组内的多个数组?

c - 指针总是字节对齐

c++ - 编译 libjpeg