next up previous contents
Elõre: Függvényekre mutató pointerek Fel: Mutatók és tömbök Vissza: Kapcsolat tömbök és mutatók

Általános mutatók

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.