假设我有一个二维浮点数组:
float a[1024][1024];
我想将指针存储到数组
我做了:
float** temp = a;
但似乎不起作用。它给出了错误:
main.cpp:在函数
'int main()'
中:
main.cpp:105:24:错误:初始化时无法将'float (*)[1024]'
转换为'float**'
float ** temp = old_array;
任何帮助表示赞赏!谢谢!
答案 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