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.

Kapcsolódó cikkek