Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
1
Mutatók, tömbök, függvények
C Mutatók, tömbök, függvények
2
Változók tulajdonságai
Mutatók A mutatók (pointerek) olyan speciális objektumok amelyek más objektumok címét tárolják. Változók tulajdonságai Mutatók tul. Típusa Neve Értéke Címe Ha egy mutató egy váltózóra mutat, 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ó által mutatott területre is, ilyenkor a mutató által mutatott változóra hivatkozunk. Ha a mutatott területnek új értéket adunk, 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 foglalhatunk le, 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
Feladat: 10 elemű tömb, elemeinek átlaga
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 elemek sorozatának kezdeté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 mindig definiá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ípus nélküli tí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
A változók, konstansok értéke másolódik át a függvény törzsébe
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.
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.