Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

automatske promenljive

[es] :: C/C++ programiranje :: C/C++ za početnike :: automatske promenljive

[ Pregleda: 3022 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Aleksa Stankovic

Član broj: 147264
Poruke: 38
212.200.65.*



Profil

icon automatske promenljive04.07.2008. u 12:01 - pre 192 meseci
Bas sam zbunjen, ovo mi je mnogo cudno ponasanje. Evo koda:

Code:


#include <cstdio>
void f()
{
    int b;
    printf("%d n",b);
    b=2;
}
int main()
{
    f();
    f();
    return 0;
}



Mozda treba malo objasnjenje programa:
Program zapravo ne radi nista korisno, vec mi je sluzio da objasnim static promenljive. (umesto int b stavio sam prvo static int b). Naravno sa static int b rezultat je bio ocekivan, kada bi b dobilo vrednost 2 pri sledecem pozivu funkcije f otstamapana bi bila vrednost 2(za b). Onda ja izbrisem rec static(i dobijem gore napisan kod). I onda dobijem isti rezultat, sto mi nije jasno. Zar u ovom slucaju kada se izvrsi funkcija f() zatvore se zagrade{} i automatska promenljiva b treba da se izbrise. Pri sledecem pozivu funkcije b bi opet trebalo da da neku proizvoljnu vrednost. Ali to se ne desava. Zasto?

nadam se da ste me shvatili :)
 
Odgovor na temu

karas

Član broj: 5574
Poruke: 482
217.26.78.*



+1 Profil

icon Re: automatske promenljive04.07.2008. u 13:07 - pre 192 meseci
Promenljiva se izbrise u smislu da joj se vise ne moze (ili ne bi trebalo) pristupati, a ne da se na to mesto u memoriji upisuju nule ili nekako drugacije obrise. Tako, kad unistis b pa ga onda opet kreiras moze da se desi da sadrzi vrednost sa istog memorijskog mesta. Kako zaredom pozivas f() tj. dva puta vrednosti bacas na stek, ovakav scenario je prilicno verovatan.

Sveti Avgustin: "Dobar hrišćanin treba da se kloni matematičara i svih onih koji daju lažna proročanstva. Postoji opasnost da su matematičari već sklopili pakt sa Đavolom, da pomrače čovekov um i da ga okuju okovima pakla."
 
Odgovor na temu

Aleksa Stankovic

Član broj: 147264
Poruke: 38
212.200.65.*



Profil

icon Re: automatske promenljive04.07.2008. u 13:49 - pre 192 meseci
Veoma zanimljivo, i pomalo cudno(makar za mene)...
Hvala na objasnjenju!
 
Odgovor na temu

karas

Član broj: 5574
Poruke: 482
217.26.78.*



+1 Profil

icon Re: automatske promenljive04.07.2008. u 14:46 - pre 192 meseci
C++ prilikom kreiranja automatske promenljive rezervise memoriju ali inicijalizaciju moras sam da uradis, preko konstruktora ili dodele vrednosti. Inace, vrednost koju sadrze nije definisana tj. sadrze neku slucajnu vrednost koja se nasla u tom parcetu memorije.
Lokalne staticke dobijaju inicijalnu vrednost (nulu) iako ti to ne uradis. Detalje mozes naci na http://www.steveheller.com/cppad/Output/function7.html

Sveti Avgustin: "Dobar hrišćanin treba da se kloni matematičara i svih onih koji daju lažna proročanstva. Postoji opasnost da su matematičari već sklopili pakt sa Đavolom, da pomrače čovekov um i da ga okuju okovima pakla."
 
Odgovor na temu

Aleksa Stankovic

Član broj: 147264
Poruke: 38
212.200.65.*



Profil

icon Re: automatske promenljive04.07.2008. u 15:08 - pre 192 meseci
Dobar sajt.
Hvala jos jednom!
 
Odgovor na temu

Burgos
Nemanja Borić
Amazon Web Services
Berlin

Član broj: 12484
Poruke: 1947
217.169.209.*

Sajt: stackoverflow.com/users/1..


+480 Profil

icon Re: automatske promenljive12.07.2008. u 12:49 - pre 192 meseci
Visual C++ 2008 izgleda briše promenljivu iz memorije, tj. popunjava ga nekim rnd podacima. Ni u jednom slučaju ne dobijam 2, tako da se ne treba uzdati u to.
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: automatske promenljive

[ Pregleda: 3022 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.