#include int f(int x){ int a = 0; // lokalno za f for (int i=0; i<5; i++){ // lokalno za for petlju int b = i+1; printf("%d\n", b); // (1) // ako promenimo ime promenljive nece se nista promeniti u izlazu programa // ovo a ce biti vidljivo samo unutar ove for petlje // OVAKO NE RADITI!!! // unutrasnji doseg je podskup spoljasnjeg i ne koristiti iste // nazive promenljivih u ugnjezdenim blokovima //int a = i+1; //printf("%d\n", a); } return 0; } int g(int x){ // (3) // staticki zivotni vek // doseg bloka funkcije static lok = 0; //lokalna za funkciju lok++; //nece biti automaski oslobodjena prilikom izlaska iz funkcije // drugi put se nece inicijalizovati, vec ce se samo izvrsiti naredna naredba //moze se koristiti za brojanje poziva funkcije g } int main(int argc, char *argv[]){ // (2) //kada pokrenemo program // ove promenljive pocinju da zauzimaju memoriju kada kontrola programa // udje u funkciju f // zauzima promenljive x i a // kada se pokrene for petlja kreira se i // kada se zavrsi ne postoji vise i // i i b se automatski oslobadjaju f(0); // (4) // dinamicki zivotni vek, vezan za dinamicki alociranu memoriju int *p = (int *)malloc(10*sizeof(int)); // eksplicitno se oslobadja prostor pozivom funkije free free (p); // (5) // staticki zivotni vek se automatski popunjava sa 0 // (globalne ili static promenljive) // - bolje se ne oslanjati na to // automaske promenljive i dinamicke promenljive nemaju // - inace podrazumevano ne postoji definisana vrednost i uzima se // vrednost koja se nalazila u memoriji u tom trenutku // --- uvek dodeliti vrednost promenljivoj // (6) // globalne promenjive ako su neophodne za komunikaciju // bolje preko povratnih vrednosti fja // memorija se samo jednom alocira return 0; }