Literales compuestos en C
Un valor sin nombre de tipo struct o arreglo, construido donde se necesita.
struct Point {
int x;
int y;
};
static int manhattan(struct Point a, struct Point b) {
int dx = a.x - b.x;
int dy = a.y - b.y;
return (dx < 0 ? -dx : dx) + (dy < 0 ? -dy : dy);
}
int distances(void) {
int near = manhattan((struct Point){0, 0}, (struct Point){3, 4});
int *scratch = (int[]){1, 2, 3, 4};
return near + scratch[3];
}
Cómo funciona
(struct Point){1, 2}es un valor, no una declaración.- Puede pasarse directo en una llamada.
- Su vida es el bloque que lo contiene, así que nunca retornes su dirección.
Palabras clave y builtins usados aquí
intreturnstaticstructvoid
El intento, en números
- Líneas
- 16
- Caracteres a escribir
- 332
- Tokens
- 130
- Ritmo de tres estrellas
- 90 tpm
Al ritmo de tres estrellas de 90 tokens por minuto, este intento toma unos 87 segundos.
Paso 4 de 4 en Valores y almacenamiento; paso 30 de 35 en Fundamentos del lenguaje.