typestar

restrict en C

restrict promete que los punteros no se solapan, y eso deja optimizar al compilador.

void add_arrays(int *restrict out, const int *restrict a,
                const int *restrict b, size_t n) {
    for (size_t i = 0; i < n; i++) {
        out[i] = a[i] + b[i];
    }
}

void scale_in_place(int *values, size_t n, int factor) {
    for (size_t i = 0; i < n; i++) {
        values[i] *= factor;
    }
}

Cómo funciona

  1. Dos punteros restrict no pueden dirigirse al mismo objeto.
  2. Romper la promesa es comportamiento indefinido, no un aviso.
  3. memcpy lo tiene; memmove deliberadamente no.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
12
Caracteres a escribir
267
Tokens
97
Ritmo de tres estrellas
105 tpm

Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 55 segundos.

Escribe este fragmento

Paso 2 de 2 en Calificadores; paso 7 de 13 en Uniones, campos de bits y comportamiento indefinido.

← Anterior Siguiente →