Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

5. előadás (2005. március 22.) Függvények definíciója, deklarációja, hívása Enumerációs adattípus 1.

Hasonló előadás


Az előadások a következő témára: "5. előadás (2005. március 22.) Függvények definíciója, deklarációja, hívása Enumerációs adattípus 1."— Előadás másolata:

1 5. előadás (2005. március 22.) Függvények definíciója, deklarációja, hívása Enumerációs adattípus 1

2 Függvény definíció 1. [típus] függvénynév ([argumentum lista]) argumentum deklaráció { függvénytörzs } A függvény törzsében: return kifejezés A visszatérő érték tömb és függvény kivételével bármilyen típus lehet. Kerüljük a nagyméretű struktúrákat. Default: int, ha nincs: void 2

3 Függvény definíció 2. Az argumentum lista és az argumentum deklaráció összevonható. Pl. double vhossz(x, y, z) double x, y, z; { return (sqrt(x*x+y*y+z*z)); } vagy összevonva: double vhossz(double x, double y, double z) {... } 3

4 Függvény definíció 3. Függvény definíciók nem ágyazhatók egymásba! A definícióban szereplő argumentum lista a formális paraméter lista. 4

5 Függvény hivatkozás 1. függvénynév (aktuális paraméter lista) Pl. c = vhossz (2.0, 4.1, 5.0); Paraméter átadási mechanizmusok: érték szerinti, cím szerinti. A C-ben csak érték szerinti. Cím szerinti: pointerrel. Az aktuális paraméterekről átmeneti másolat készül és ezek lokális változókként viselkednek. Az aktuális és a formális paraméter lista elemei között típusegyeztetés történik. 5

6 Függvény hivatkozás 2. Automatikus típus konverzió paraméter átadáskor: 1.char, short -> int 2.float-> double 3.tömb-> pointer 6

7 Függvény deklaráció Minden hivatkozás előtt az adott szimbólumra vonatkozó összes információnak rendelkezésre kell állnia. Prototípus: típus függvénynév (típus lista); Pl. double vhossz (double, double, double); Header állomány szerepe. 7

8 Rekurzív függvény definíció A függvény törzsében önmagára hivatkozik. Pl. long fakt (long n) { if (n == 0) return 1; else return n*fakt (n-1); } Pl. fakt(5)=5*4*3*2*1*1 Végtelen egymásba ágyazás! Memória probléma! 8

9 Visszatérő érték: pointer Pl. int *maxcim (int *x1, int *x2) { if (*x1 > *x2) return x1; else return x2; } 9

10 Függvény pointerek 1. A függvények azonosítói a tömbökhöz hasonlóan címek, bár nem adatcímek, hanem önálló kódok belépési pontjai, amelyek értéket állítanak elő. Deklaráció: típus (*név) (argumentum lista); int osszeg(int a, int b) { return a+b; } main () { int (*pf) (); pf = osszeg; printf("\n%d",(*pf)(7,76)); } 10

11 Függvény pointerek 2. Az int (*pf)(); /*függvény pointer deklaráció*/ és az int *pf();/*prototípus*/ deklarációk nem egyenértékűek! 11

12 Függvény pointer tömbök int osszeg(int a, int b) { return a+b; } int szorzat(int a, int b) { return a*b; } main () { int (*pft[2]) (); pft[0] = osszeg; pft[1] = szorzat; printf("\n%d%d", (*pft[0])(7, 76),(*pft[1])(8, 44)); } 12

13 Enumerációs adattípus 1. Olyan szimbólumkészlet (nevek) használata, amelyeknek kódolása nem fontos. Két lehetőség van: egyenként: #define HAROMSZOG 1 #define NEGYSZOG 2 #define OTSZOG 3 13

14 Enumerációs adattípus 2. enum enum_azonosító {haromszog, negyszog, otszog}sikidom; vagy enum {pont, egyenes, szakasz} elemek; Használata: sikidom = otszog; sikidom = pont;/* illegális */ A felsorolt típusok konstansok, 0-tól sorszámozódnak, relációs operátor használható, értékadásnál típusellenőrzés (Pascal: set). 14

15 Enumerációs adattípus 3. Eltérő sorszámozás: enum {pont=3, egyenes=1, szakasz=-1} elem; vagy enum {jan=1, febr, marc,... } honapok; 15


Letölteni ppt "5. előadás (2005. március 22.) Függvények definíciója, deklarációja, hívása Enumerációs adattípus 1."

Hasonló előadás


Google Hirdetések