1 / 15

5. előadás (2005. március 22.)

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. 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

erwin
Download Presentation

5. előadás (2005. március 22.)

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. 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: • char, short -> int • float -> double • 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

More Related