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
- Cualquier puntero a objeto convierte a
void *y de vuelta sin pérdida. - No puede desreferenciarse hasta castearlo a un tipo real.
- Así un contenedor genérico lleva elementos de los que no sabe nada.
Palabras clave y builtins usados aquí
charconstdoubleforintreturnsize_tunsignedvoid
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.
Paso 1 de 4 en Punteros genéricos y a funciones; paso 6 de 25 en Punteros y memoria.