6. előadás
Előadás felvétele ~~ki lesz~~ KI VAN rakva a honlapra
Deklaráció
Változó létezésének kinyilvánítása. Általában definícióval is jár, tehát a változó értékét is megadjuk, de nem mindig.
A tárolási osztály a deklaráció jelentését befolyásolja: auto, register, static, extern, typedef
int i; // int változó definiálása
int *i; // intre mutató pointer definiálása
int t[10]; // 10 egészt tartalmazó tömb definiálása
int func1(void){;} // Paraméter nélküli, int-el visszatérő függvény
int func2(int i, double d){;}
int **pi; // intre mutató pointerre mutató pointer
int tt[10][20]; //10 darab 20 elemű inteket tároló tömböt tároló tömb (mátrix)
int *func3(void){} //int pointerrel visszatérő fgv.
extern
extern int i; // int deklaráció, amely valahol máshol van DEFINIÁLVA
extern int *i;
extern int t[10];
extern int t[10][20];
extern int t[][20]; // Legbaloldalibb szám elhagyható
extern int func1(void); // paraméter nélküli fgv. deklarációja
int func1(void); //fgv.deklaráció esetén az `extern` elhagyható
int func2(); // CSAK DEKLARÁCIÓKOR! Nem tudunk semmit a paraméterekről.
Láthatóság
shadowing - eltakarás
TODO
Élettartam
char buffer[80]; // statikus élettartam, kezdőértéke csupa 0
int k = 42; // statikus élettartam
static double j; // statikus élettartam, nem látható másik fordítási egységből
int count(void){
static int cnt = 0; // lokális, DE statikus
++cnt;
return cnt; //Minden meghíváskor egyel nagyobb számot ad vissza
}
Automatikus élettartam
Ha egy lokális változó nem static, akkor annak az élettartama automatikus
A függvénykilépéskor a változó felszámolódik.
Dinamikus élettartam
malloc