これは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));
}