この回答がreinterpret_cast
規則に違反していることは知っていますが、サブ配列が線形に割り当てられることも前提としています。
これは保証されていないと信じていましたが、標準を検索すると、自信が揺らいでいます。次のように、2D 配列を静的に割り当てる場合:
int foo[][4] = { { 5, 7, 8 },
{ 6, 6 },
{},
{ 5, 6, 8, 9 } };
すべての要素が線形に割り当てられると仮定してもよろしいですか? つまりfoo[0]
、 がアドレス 0x00000042 にある場合、次のようになります。
foo[1]
アドレス 0x00000052 にありますfoo[2]
アドレス 0x00000062 にありますfoo[3]
アドレス 0x00000072 にあります
これらのアドレスは 16 進数であり、はい、4 要素のサブ配列にスペースを提供していsizeof(int) == 4
ます。それらはゼロで初期化される場合とされない場合があります。