c言語の配列の定義で知らなかった書き方

1 min read読了の目安(約300字
#include <stdio.h>

int main() {
    int arr[2][2][2] = {10, 2, 3, 4, 5, 6, 7, 8};
    int *p;
    p = &arr[0][0][1];
    printf("%d", *p); // 4
}

上記のコードでコンパイルできてかつ、出力がされた。

int arr[2][2][2] = {10, 2, 3, 4, 5, 6, 7, 8};

の行は、以下のような配列を作るらしい。

[[[10, 2],[3, 5]], [[5, 6],[7, 8]]]