Malchos
https://pastebin.com/Mch5QtVc

Mógłby ktoś rzucić okiem i mnie oświecić dlaczego pritnf w funkcji fun1() wyświetli 13?
Z tego co widzę var1 i var2 mają ten sam adres, wygląda jakby wartość zmiennej var2 dalej była przechowywana w pamięci mimo wyjścia z funkcji fun2() przez co zmienna var1 zostaje zainicjalizowana tą wartością z defaultu. Mógłby ktoś wyjaśnić?

#jezykc
1
  • Najlepsze
  • Wszystkie komentarze
kickli
@Malchos: nie nadales wartosci zmiennej var1, pod adresem zostala stara wartosc mozliwe ze jest to var2
1
Malchos
mozliwe ze jest to var2


@kickli: A od czego ta "możliwość" zależy?
Czemu w poniższym przypadku printf nie zwraca 5?
https://pastebin.com/qmrSHC7Q
0
Wina_Segmentacji
@Malchos: Pewnie od tego: https://en.wikipedia.org/wiki/Call_stack
W drugim przykładzie i i j są pod innymi adresami więc printf wypisuje cokolwiek jest pod j.

W pierwszym przykładzie podejrzewam, że obie zmienne przy każdym wywołaniu trafiły u Ciebie pod ten sam adres ponieważ druga jest niezainicjalizowana to wypisywane jest cokolwiek jest pod jej adresem i okazuje się, że jest tam zawartość poprzedniej zmiennej.
0
kickli
@Malchos: To zależy do jakiego adresu zostanie przypisana zmienna. Jeżeli j zostanie zapisane na miejscu i to wyświetli ci się wartość jaką posiadało i ale nie zawsze tak będzie.
0