当我将动态指针范围设置为二维或更高时,我一直运气不佳。例如,我想要一个指向二维数组的指针。我知道:
int A[3][4];
int (*P)[4] = A;
完全合法(即使我不完全理解为什么)。考虑到:
int *P = new int[4];
工作,我想象:
int **P = new int[5][7];
也可以,但不是。此代码说明了错误:
Error: A value of type "(*)[7]" cannot be used to initialize an entity of
type "int **"
通过看到这一点,新部分变成了一个指向我制作的 7 个整数数组的指针:
int (*P)[4] = new int[7][4];
这确实有效,但这不是我想要完成的。通过这样做,我仅限于至少对任何后续维度使用常量值,但我希望它在运行时完全定义,因此是“动态的”。
我怎样才能让这个多维指针工作?