这是从this answer to a previous question of mine来的。 是否保证编译器将array[4][4]
与array[16]
相同?铸造多维和单维阵列
例如,以下任一调用api_func()
是否安全?
void api_func(const double matrix[4][4]);
// ...
{
typedef double Matrix[4][4];
double* array1 = new double[16];
double array2[16];
// ...
api_func(reinterpret_cast<Matrix&>(array1));
api_func(reinterpret_cast<Matrix&>(array2));
}