存储二维数组指针的方法是什么



假设我有一个 2-D 浮点数数组:

float a[1024][1024];

我想存储指向数组的指针

我做了:

float** temp = a;

但似乎不起作用。它给出错误:

main.cpp: 在函数'int main()'中:
main.cpp:105:24:错误:初始化时无法将'float (*)[1024]'转换为'float**'

   float ** temp = old_array;

任何帮助不胜感激!谢谢!

数组衰减到指针。在 2D 数组的情况下,T[x][y] 类型的数组将衰减成 T(*)[y] ,而不是T**

§ (8.3.4) 数组:

如果E是秩i × j × ... × k的n维数组, 然后,出现在受数组到指针转换 (4.2) 影响的表达式中的E将转换为 指向秩为 j × ... × k(n−1)维数组的指针。如果将 * 运算符(显式或隐式作为下标的结果)应用于此指针,则结果是指向的 (n − 1) 维数组,该数组本身会立即转换为指针。

您的选项是手动重新配置类型以匹配表达式的类型...

float (*temp)[1024] = a;

或使用多std::vectorstd::array (C++11)...

std::array<std::array<int, 1024>, 1024> a;
auto temp = a;

相关内容