Inicializando matriz de estruturas [duplicado]

Esta questão já tem uma resposta aqui:

Como inicializar uma estrutura de acordo com os padrões da linguagem de programação C 14 respostas

Aqui está a inicialização que acabei de encontrar na pergunta de outra pessoa.

my_data data[]={
    { .name = "Peter" },
    { .name = "James" },
    { .name = "John" },
    { .name = "Mike" }
};

Eu nunca vi algo assim antes e não consigo encontrar uma explicação de como é possível .name ser correto.
O que eu estou procurando é como passo a passo esse processo vai.

Parece que fica:

1) data;
2) *data;
3) (*data).name;
4) (*data).name="Peter";

Ou eu estou totalmente errado?

questionAnswers(6)

yourAnswerToTheQuestion