C · Avançado · Português · Técnico
literal composto
Expressão do C99 que cria um objeto sem nome a partir de um tipo e uma lista de valores, como (struct ponto){1, 2}. Em escopo de bloco, vive até o fim do bloco.
Onde usar
Útil para passar uma struct pequena a uma função sem declarar uma variável auxiliar. Também permite criar arrays temporários, como (int[]){1, 2, 3}.
Em código
struct ponto { int x, y; };
void desenha(struct ponto p);
// ...
desenha((struct ponto){.x = 3, .y = 4});Exemplos
Passei um literal composto em vez de criar uma variável só para a chamada.
Esse literal composto vive só até o fim do bloco.
Cuidado
Devolver o endereço de um literal composto de dentro de uma função, porque o objeto deixa de existir no return.
Sinônimos
compound literal