Gyakorlat, 7. hét: pointerek használata

Czirkos Zoltán · 2024.10.12.

Pointerek (mutatók) használata: cím szerinti paraméterátadás, tömbök és pointerek kapcsolata. Tömbök átadása függvényeknek. Sztringek mint nullával lezárt tömbök, alacsony szintű sztringkezelés.

A lenti programokban gyakran tömböt adunk át egy függvénynek. Az alapvető különbség a sima tömbök és a nullával lezárt sztringek között az, hogy az utóbbiaknál a tömb tartalma (karakterek és lezáró nulla) alapján tudjuk azt, hogy hol van vége annak. Ebben a speciális esetben nem kell átadni a tömb méretét a függvényeknek, máskor viszont mindig igen! Érdemes ilyen szemmel összehasonlítani a programokat.

Másrészről: a paraméterként kapott tömböt a függvény tudja módosítani, hiszen cím szerint kapja meg azt. Az eredeti memóriát látja, nem a tömb egy másolatát! Ezt is kihasználjuk a függvényeinkben.

Felkészülés a gyakorlatra:

1. Harmadik kis ZH

Ezen az órán van a harmadik kis ZH.

2. Cím szerinti paraméterátadás

Írjunk egy függvényt, amelyik kiszámítja és visszaadja két szám összegét és szorzatát!

3. Tömb átadása függvénynek

Írjunk függvényt, amely paraméterként átvesz egy egész számokból álló tömböt, és szétválogatja azokat egy második és egy harmadik tömbbe, aszerint hogy párosak vagy páratlanok!

Írjunk függvényt, amely kiírja a paraméterként kapott, egész számokból álló tömb elemeit!

Írjunk ezekhez főprogramot, amelyikkel szétválogatunk egy számsort, és kiírjuk külön a párosakat, külön a páratlanokat!

Hasonló feladatok

Ha ennek a feladatnak a megoldását a gyakorlaton nehezen értetted meg, vagy nem tudnád önállóan megoldani, a példatárban itt találsz hasonlókat, amiken gyakorolhatsz otthon.

4. Fordítva

A feladatunk megfordítani egy sztringet. Írjuk meg ezt két külön változatban, azaz két külön függvényben! Az egyik függvény két tömböt kapjon, a bemenetet és a kimenetet. A másik függvény pedig végezze el a sztring megfordítását helyben: módosítsa a paraméterként kapott sztringet!

5. Mindentegybevéve

Írjunk függvényt, amelyik paraméterként kap egy sztringet. Változtassuk meg olyan módon, hogy a szóközöket kiszedjük belőle! Dolgozzunk a megadott sztringen! (A keletkező sztring ne egy másik memóriaterületen legyen, hanem az eredetit változtassuk meg!)

Hasonló feladatok

Ha ennek a feladatnak a megoldását a gyakorlaton nehezen értetted meg, vagy nem tudnád önállóan megoldani, a példatárban itt találsz hasonlókat, amiken gyakorolhatsz otthon.

6. További feladatok

Palindrom I.

Írjunk programot, amelyik egy sztringről eldönti, hogy palindrom-e: azaz oda-vissza olvasva ugyanaz-e, mint önmaga. Közismert magyar nyelvű palindrom mondat az „Indul a görög aludni.” Hogyan egyszerű megírni, ha módosíthatjuk a sztringet, vagy akkor, ha nem? Mi köze ennek az előző két feladathoz?

Palindrom II.

Írjunk függvényt, amelyik megmondja egy szövegről, hogy palindrom-e! Ez azt jelenti, hogy visszafelé olvasva ugyanazt adja. Segédtömböt nem használhatunk, hanem az eredeti tömböt vizsgálva kell választ adni.

Pointerek

Írjuk meg a gyakorlat összes függvényét úgy, hogy sehol nem használunk tömb indexelést, sem *(ptr + int) alakú kifejezéseket! Helyette mindenhol pointerekkel lépkedünk a tömbökben.