结构字段是如何填充的?

How are the structure fields getting populated?

当我执行下面的C程序时,输出是i

struct student {
    char a[5];
};
int main() {
    struct student s[] = { "hi","hey" };
    printf("%c", s[0].a[1]);
    return 0;
}

我无法理解命令的功能是什么struct student s[] = { "hi","hey" }; 任何可能的理由都会非常有帮助。

定义

struct student s[] = { "hi","hey" };

等同于

struct student s[2] = { { "hi" }, { "hey" } };

所以s[0]是数组s的第一个元素。 s[0].a[1] 将是 s[0].a 的第二个字符。