typestar

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

  1. (struct Point){1, 2} es un valor, no una declaración.
  2. Puede pasarse directo en una llamada.
  3. Su vida es el bloque que lo contiene, así que nunca retornes su dirección.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 4 de 4 en Valores y almacenamiento; paso 30 de 35 en Fundamentos del lenguaje.

← Anterior Siguiente →