S1.c
имеет место для 3 байтов, а S1.s
- указатель на строку.
первая часть определяет структуру:
struct S1 {
char c[3], *s;
};
Следующая часть создает экземпляр этого типа и инициализирует его несколькими значениями:
static struct S1 s1 = {"abc", "def" };
static не является частью определения структуры. Это относится к видимости переменной экземпляра.