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

时间:2014-01-15 01:57:27

标签: c++ arrays pointers multidimensional-array

假设我有一个二维浮点数组:

float a[1024][1024];

我想将指针存储到数组

我做了:

float** temp = a;

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

  

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

   float ** temp = old_array;

任何帮助表示赞赏!谢谢!

1 个答案:

答案 0 :(得分:3)

数组衰减到指针。对于2D数组,类型为T[x][y]的数组将衰减为T(*)[y],而不是T**

  

§(8.3.4)阵列:

     

如果E是排名为i × j × ... × k的n维数组,   那么出现在受到数组到指针转换(4.2)约束的表达式中的E将转换为a   指向排名为(n−1)的{​​{1}}维数组的指针。如果j × ... × k运算符(由于下标而显式或隐式)应用于此指针,则结果是指向* - 维数组,该数组本身立即转换为指针。

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

(n − 1)

或使用多级float (*temp)[1024] = a; std::vector(C ++ 11)......

std::array