假设我有一个 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::vector
或std::array
(C++11)...
std::array<std::array<int, 1024>, 1024> a;
auto temp = a;