1 / 20

Mutatók, tömbök , függvények

C. Mutatók, tömbök , függvények. Mutatók. A mutatók ( pointerek ) olyan speciális objektumok amelyek más objektumok címét tárolják.

hovan
Download Presentation

Mutatók, tömbök , függvények

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. C Mutatók, tömbök, függvények

  2. Mutatók A mutatók (pointerek) olyan speciális objektumok amelyek más objektumok címét tárolják. Ha egy mutató egy váltózóramutat, a mutató értéke a mutatott változó memóriacíme lesz. Ha kiíratjuk a mutató értékét, egy memóriacímet kapunk, de hivatkozhatunk a mutatóáltalmutatottterületre is, ilyenkor a mutató által mutatott változóra hivatkozunk. Ha a mutatott területnek új értéketadunk, a változó értékét változtatjuk meg. Pl.: K:51.o

  3. Mutatók

  4. Mutatók – dinamikus memóriahasználat Nagyon fontos lehetősége a C nyelnek az ún. dinamikus memóriahasználat. Ennek során memóriablokkot foglalhatunkle, amelyet mutató segítségével elérhetünk, és ha már nincs szükségünk a lefoglalt területre, felszabadíthatjuk azt. K: 54.o. Minden memóriafoglalási kísérlet (malloc) után meg kell vizsgálnunk, hogy sikerült-e lefoglalni a kívánt méretű memóriablokkot. Amennyiben ezt a vizsgálatot elmulasztjuk, illetve ha kezdőérték nélküli mutatót használunk, akkor minden esélyünk megvan arra, hogy a program futása megszakadjon, vagy hogy a számítógépünk lefagyjon.

  5. Többszörös indirektségű mutatók K: 55.o.

  6. Tömbök Az egydimenziós tömböket deklarálnunk kell, melynek az általános alakja: Feladat: 10 elemű tömb, elemeinek átlaga Az egydimenziós tömb (vektor) elemei a memóriában adott címtől kezdve folytonosan helyezkednek el. Mindegyik elemre a[i] formában hivatkozunk:

  7. Tömbök inicializálása A C nyelv lehetővé teszi, hogy a tömböket a definiálásuk során konstans értékekkel inicializáljuk. Ez a kezdőértékadás eltér az egyszerű változók esetén használt megoldástól. A tömb elemszámának meghatározása a programon belül: 3_1.c

  8. Mutatók és tömbök *p Ha p memóriaobjekumra mutat, akkor a mutatóaritmetika szabályai alapján a p+1, a p+2, .. stb. címek az adott objektum után elhelyezkedő objektumokat jelölik ki. Ennek alapján a *(p+i) kifejezéssel a tömb minden elemét elérhetjük.

  9. Mutatók és tömbök A p mutató szerepe teljesen megegyezik az a tömbnév szerepével, hisz mindkettő az elemeksorozatánakkezdetét jelöli ki a memóriában. Lényeges különbség azonban a két mutató között, hogy míg a p mutató változó (tehát értéke módosítható), addig az a egy konstans mutató, amelyet a fordító rögzít a memóriában.

  10. Stringek A C nyelv nem rendelkezik önálló sztringtípussal, ezért a karaktertömböket használja a sztringek tárolására. A sztring tehát olyan karaktertömb (char[]), melyben a karaktersorozat végét nulla értékű byte (‘\0’) jelzi. Kezdőérték megadására használható a vektoroknál bemutatott megoldás, azonban a ‘\0’ sztring záró karakter megadásáról nem szabad elfeledkeznünk. A karaktertömbök inicializálása azonban sokkal biztonságosabban elvégezhető a sztringliterálok (sztringkonstansok) felhasználásával:

  11. Stringek

  12. Többdimenziós tömbök A C nyelv támogatja a többdimeniós tömbök használatát. A többdimenziós tömbök deklarációjának általános formája: Két dimenzió: K: 133.o.

  13. Tömbök – dinamikus memóriahasználat Nem szabad megfeledkeznünk a pd mutató értékének vizsgálatáról, hogy megtudjuk sikeres volt-e a helyfoglalás. A lefoglalt terület valójában egy mutatóval kijelölt blokk a memóriában. A blokkban tárolt double típusú objektumok elérése pointeres és tömbös módon is történhet: Ha már nincs szükségünk a tömbre, a lefoglalt területet fel kell szabadítanunk a free függvény segítségével:

  14. Függvények, eljárások A függvény a C program olyan névvel ellátott egysége (alprogram), amely a program más részeiből annyiszor meghívható, ahányszor csak szükség van a függvényben definiált tevékenységsorozatra. A C program általában sok kisméretű, jól kézben tartható függvényből épül fel. A függvény definíciója: Pl:

  15. Függvényhívás A saját függvényeinket mindigdefiniálni kell. A definíció, amelyet csak egyszer lehet megadni, a C programon belül bárhol elhelyezkedhet. Ha a függvény definíciója megelőzi a felhasználás (hívás) helyét, akkor ez egyben a függvény deklarációja is.

  16. Eljárások Az eljárások olyan függvények amelyeknek „nincs visszatérési értékük”. A visszatérési típusnál void típust használunk, amit a típusnélkülitípus ként tartunk számon. Ez azt jelzi hogy ennek a függvénynek a visszatérési értékének „nincs meghatározva a típusa”, vagy mondhatni „nincs visszatérési értéke”, nem kell megadni a return utasítást a függvény törzsében.

  17. Paraméter kiértékelés A függvények, eljárások hívása során a paramétereket a megfelelő sorrendben kell megadni

  18. Paraméter átadások Érték szerinti paraméterátadás: A változók, konstansok értéke másolódik át a függvény törzsébe Érték szerinti átadásnál a függvényen belül a kapott értékek változhatnak, de a változások nincsenek hatással az átadott változókra. Az átadásnál csak értékek másolódnak át, memóriacímek nem.

  19. Paraméter átadások Cím szerinti paraméterátadás: Itt azokat a memóriacímeket adjuk át, ahol a változók tárolva vannak. A függvény törzsében történő változtatások hatással vannak az átadott változókra is.

More Related