A fentiekben azt láttuk, hogy a mutatóknál a mutatott
típus ismerete milyen fontos, hiszen az aritmetikának is
csak így van értelme (például p++
esetén a p értéke, mint fizikai byte-cím
annyival nõ meg, mint a mutatott adat mérete byte-ban). Ennek
ellenére gyakran van szükségünk "általános
pointer típusra". Gondoljunk a malloc függvényre:
ennek értéke egy olyan pointer, aminek a típusát
nem ismerjük, de nem is érdekes, úgyis átalakítjuk
explicit konverzióval, mielõtt bármilyen mûveletet
végeznénk vele. De a malloc-ot is deklarálni
kell valaminek! Mi legyen az? A hagyományos C implementációknál
az ilyen általános pointereket char* típusúnak
deklarálták, ami miatt nem lehetett róluk egybõl
látni, hogy semmi közük sincs a karakterekhez. A korszerû
fordítók erre a célra bevezettek egy új típust:
void*. Ezekkel a pointerekkel csak a következõ mûveletek
végezhetõk: tetszõleges mutatóértékkel
feltölthetõk, értékük típusdeklarációval
tetszõleges pointerré átalakítható,
vizsgálható, hogy tartalmuk NULL-e, vagy sem. Minden
egyéb pointermûvelet (például indirekció)
tilos.