Informatika2-2012/Gyakorlat04

A MathWikiből
A lap korábbi változatát látod, amilyen Ador (vitalap | szerkesztései) 2012. február 29., 22:27-kor történt szerkesztése után volt.

Mutatók (pointer-ek)

A lenti feladatokat a CodeLite-ban oldhatjátok meg legegyszerűbben (ne felejtsetek el minden feladathoz új projektet nyitni!), de akinek a konzolos, gcc-s fordítás a szimpatikusabb úgy is csinálhatja.

Ismerkedés a mutatókkal és a debuggerrel

Ha mutatókakl végzünk műveleteket, azt könnyű elrontani. Ezért mielőtt belemerülünk, ismerkedjünk meg egy hatékony hibakeresési módszerrel.

A CodeLite tartalmaz beépített debuggert (bug = rajtett hiba a kódban; debugging = ennek keresése/javítása; debugger = ezt segítő eszközkészlet/segédprogram).

Másoljuk be a következő kódot egy új projekt main.c-jébe:

#include <stdio.h>
 
main() {
  int a=5; int b=6; int c = 7;
  int *bb;
  int *aa = &a;
  bb = &b;
  a = 3;
  aa = bb;
  *aa = 8;
  aa = &c;
  *aa = 10;
  *bb = *aa;
}

A hibakeresés egyik fontos eszköze hogy a program futását bárhol megállíthassuk és ránézhessünk a változók pillanatnyi értékére. A program persze túl gyorsan fut ahhoz hogy futás közben megnyomjunk egy "pause" gombot, ezért előre meg kell adni azokat a helyeket (sorokat) ahol szeretnénk hogy megálljon a futás. Ezek az ún. "töréspontok" (breakpoint). Állítsunk be töréspontokat a kód melett balra a sorszámokat is tartalmazó csíkra (a sor-szám mellé kicsit jobbra) kattintva! Piros pöttyöknek kell megjelenniük a kattintás helyén. Ezek a pöttyök jelzik a töréspontokat. Egy következő kattintás kitörli a töréspontot.

A programot ne úgy futtassuk mint eddig (Build menü -> Run), hanem a "Debug" menüpont alatti "Start/Continue debugger" -rel. A kerek kék "play-gombbal" ugorhatunk a következő töréspontra, a kapcsoszárójeles-zöldnyilas gombokkal pedig sorról sorra haladhatunk akkor is ha nincs ott töréspont, illetve bemehetünk egy függvényhívás belsejébe, vagy a visszatérése utáni állapotra ugorhatunk.

Futtassuk le lépésről lépésre (szinte minden sorban legyen töréspont) a programot és figyeljük meg a változók értékeinek változását ( a lenti "Locals" fül alatt fognak látszani)!

Személyes eszközök