所以我目前正在研究嵌入式主板(STM32)并特别考虑内存限制,我试图避免包括内存分配在内的繁重功能。我有1x9 2D数组,我需要reshape
到3x3。我在网上发现它可以使用reinterpret_cast
完成,但我不知道它是否安全这样做?
下面是一个使用reinterpret_cast
进行重新整形以及正常数组操作的示例代码,我认为它可以替代reinterpret_cast
。你们有什么建议? 检查此代码:https://repl.it/IIYv/20;两者都有相同的输出
#include <iostream>
int main() {
double matrix[1][9] = { {10, 20, 30, 40, 50, 60, 70, 80, 90} };
//using reinterpret_cast
double (&reshapeMatrix)[3][3]=*reinterpret_cast<double(*)[3][3]>(matrix);
double newArray[3][3];
int i, j;
for (i=0; i<3; i++){
for (j=0; j<3; j++){
printf ("%f, ",reshapeMatrix[i][j]);
}
printf ("\n");
}
//using normal array operation
int r=0, c=0;
for (i=0; i<3; i++){
for (j=0; j<3; j++){
newArray[i][j] = matrix[r][c];
c++;
}
}
printf ("\n\n\n");
for (i=0; i<3; i++){
for (j=0; j<3; j++){
printf ("%f, ",newArray[i][j]);
}
printf ("\n");
}
}