7. lecke
A nyelv jellemzői C. Tutorial
A mutatók témája szorosan kapcsolódik a dinamikus adattípusok témájához. A program összeállításakor a deklarált változók szerint (attól függően, hogy hol jelölték őket) a memóriaterületeket osztják ki. Ezután ezeknek a szakaszoknak a mérete nem változik, csak tartalmuk (értékük vagy adataik) megváltozhat. Azonban a mutatók segítségével megragadhatja és felszabadíthatja az új memória területeket már a program végrehajtása során. A dinamikus adattípusokat később tárgyaljuk.
Ennek a kódnak a következtében a képernyőn megjelenik a következő (a hexadecimális szám különböző lesz):
Mint látjuk, annak ellenére, hogy a változók értékei megváltoztak, a memóriacellák ugyanazok maradtak.
A 8-as szám jelenik meg.
Ha neked a fenti nem nyilvánvaló, akkor először ismételje meg a leckét, olvassa el az egyéb forrásokat, és érjen el teljesen, mert anélkül, hogy ez a lépés használhatatlan lenne.
Ha a mutatót kijelentik, de nem definiálják, az ismeretlen értékű, önkényes memóriaterületre utal:
Az eredmény (Ubuntuban):
A programban szereplő, nem definiált mutatók használata a számításokban tele van komoly hibák előfordulásával. Ennek elkerülése érdekében egy pointerhez hozzárendelhet egy értéket, mondván, hogy a mutató nem utal semmire (NULL). Ez a mutató a kifejezésekben nem működik, amíg nincs hozzárendelve egy adott értékhez:
Az eredmény (Ubuntuban):
Ebben az esetben, ha megpróbálsz kivonni egy értéket a memóriából olyan mutatóval, amely nem utal semmihez, egy "szegmentációs hiba" történik.