int arr[4][2][3][6];
gdb を実行して arr (配列名) のタイプを検査する場合
(gdb) wha arr
type = int [4][2][3][6]
私の知る限り、式(「sizeof」または「&」のオペランドとして使用される場合を除く)では、コンパイラは配列名を配列の最初の要素へのポインターとして扱います。だから、私は期待していたtype = int (*)[2][3][6]
興味深いことに、これを調べると:
(gdb) wha arr+1
type = int (*)[2][3][6]
出力が期待どおりであることがわかります。ここで知りたいのは、それが gdb の表示スタイルなのか、それとも配列名の型が本当にint [4][2][3][6]
?
ところで、gdb がタイプがint [4][2][3][6]
であると言った理由は推測できます。
(gdb) wha &arr
type = int (*)[4][2][3][6]
つまり、is&arr
はポインタでありint [4][2][3][6]
、arr はint [4][2][3][6]
....である必要があります。