En realidad, es el "puntero al vacío" el que debe explicarse.
En los lenguajes de programación en general y en C en particular, nos gustan los tipos. Los tipos son la red de seguridad básica que verifica si estamos haciendo algo estúpido, donde "estúpido" significa "interpretar un montón de bits por algo que no son". Es posible programar sin tipos, algunos idiomas están completamente desprovistos de cualquier tipo de tipo (por ejemplo, montaje o Forth), pero esto no es para cardíacos y, en general, la productividad de los programadores parece mejorarse mucho mediante el uso de tipos .
Por lo tanto, cuando tenemos un puntero queremos que la computadora sepa qué puede encontrar al final del puntero. Queremos un "puntero a int" para que la computadora compruebe que cuando miramos los bits que están al final del puntero, los vemos como un "int" y no como algo más.
El "puntero al vacío" es el puntero sin tipo, que usamos cuando el sistema tipo C no captura lo que estamos haciendo. Es un síntoma de que C no puede seguir la complejidad del código que estamos produciendo (o tal vez el programador no fue lo suficientemente bueno para expresar lo que hace dentro de las limitaciones del sistema tipo C). Por lo tanto, aunque "void *" es conveniente en algunas situaciones, uno debería verlo como la excepción y tratar de evitarlo.
¿Puedo saber el motivo del vencimiento? – Vijay
ni idea, pero me atrevo a adivinar: ¿alguien pensó que no sabía lo suficiente sobre lo que estaba pidiendo para entender realmente una respuesta? – Will
No olvide punteros a las estructuras. – phkahler