typestar

Punteros void en C

Un puntero void guarda cualquier dirección de objeto; el cast de vuelta es tu responsabilidad.

int int_from(void *slot) {
    return *(int *) slot;
}

void copy_bytes(void *dst, const void *src, size_t n) {
    unsigned char *out = dst;
    const unsigned char *in = src;
    for (size_t i = 0; i < n; i++) {
        out[i] = in[i];
    }
}

double generic_demo(void) {
    double value = 2.5;
    void *anything = &value;
    return *(double *) anything;
}

Cómo funciona

  1. Cualquier puntero a objeto convierte a void * y de vuelta sin pérdida.
  2. No puede desreferenciarse hasta castearlo a un tipo real.
  3. Así un contenedor genérico lleva elementos de los que no sabe nada.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
17
Caracteres a escribir
322
Tokens
103
Ritmo de tres estrellas
95 tpm

Al ritmo de tres estrellas de 95 tokens por minuto, este intento toma unos 65 segundos.

Escribe este fragmento

Paso 1 de 4 en Punteros genéricos y a funciones; paso 6 de 25 en Punteros y memoria.

← Anterior Siguiente →