int a[2] = { 1, 2 };
Ok. Теперь это:
int a[2][2] = { { 1, 2 } , { 3, 4 } };
Правильно? a[0][0] = 1
и a[0][1] = 2
и a[1][0] = 3
и a[1][1] = 4
. a[0]
- это memcmp, равный (int[]){ 1, 2 }
, а a[1]
- это memcmp, равный (int[]){ 3, 4 }
.
Теперь вот это:
struct {
int a[2];
} b = { { 1, 2 } };
Итак, первый {
}
обозначает инициализацию структуры, а внутренний - b.a
. Сейчас мы создаем массив структур:
struct b_s {
int a[2];
} b[] = {
{
{ 1, 2 },
},{
{ 3, 4, }
},
};
Итак, первые фигурные скобки означают инициализацию массива b[]
. Второй предназначен для инициализации структуры b[0]
. Третий - инициализация массива b[0].a
.
b[0]
- это memcmp, равное &(struct b_s){ {1, 2 } }
. b[0].a
- это memcmp, равный (int[2]){ 1, 2 }
. b[0].a[0]
равно 1
.