spider12 napisał(a):
Nierozumiem dlaczego na zmienną lokalną mówi się "automatyczna" przecież to programista ją tworzy a nie kompilator.
Nie obraź się ale od razu na początku piszesz bzdurki, .... to tak pół żartem pół serio .... bo ty na pewno nie tworzysz tej zmiennej

tylko właśnie kompilator generuje kod, który ją tworzy podczas startu funkcji i tworzy ją na stosie
spider12 napisał(a):
-więc skąd to określenie automatycznie zaczyna swój żywot wraz z z pojawieniem się w funkcji i automatycznie kończy ?
Stąd panie kochany, że skoro zmienna zostaje utworzona na stosie ... to gdy funkcja się skończy to zwalnia stos i to miejsce będzie wykorzystane przez inne funkcje a więc koniec - amba zjada twoją zmienną

spider12 napisał(a):
-w funkcji main taka zmienna lokalna (automatyczna) zostaje raz zdefiniowana
No pewnie - a co widziałeś gdzieś program gdy ktoś wychodzi z funkcji main ??? w procku ???

ja nie widziałem. W programach na PC tak - tam gdy program kończy swój żywot to właśnie wychodzi z funkcji main i wtedy też takie zmienne automatyczne stworzone w jej wnętrzu giną - czy to jest zrozumiałe ?
spider12 napisał(a):
zostaje zapisana wartością 5 , i nigdy jej komórka nie zostanie wymazana bo funkcja main nigdy nie skończy swojego życia , zgadza się dobrze to zrozumiałem ?
No więc dobrze rozumiesz

Cytuj:
-inaczej zaś jest gdy zmienna tog jest zdefiniowana w funkcji ,która kończy swoje życie wraz z funkcją wtedy 5 znika zmienna zostanie wymazana , znów zostanie stworzona wraz z wywołaniem funkcji z main dobrze rozumuje to ?
No bardzo dobrze - to skąd te dziwne określenia na początku postu ?

Cytuj:
-str 127 z BB 10 linijka od góry, nasuwa coś innego dlaczego trzeba zawsze zainicjować jakąś wartością zmienną bo nie ma się pewności że będzie wyzerowana po zdefiniowaniu jej na nowo , czy to oznacza że zmienna tog i jej wartość nie zniknie są jakieś sytuacje , w których podpunkt nie sprawdza się:
Zrozum proszę - stworzenie zmiennej automatycznej na stosie to tylko zarezerwowanie miejsca na nią w pamięci RAM na tym stosie. Skąd wiesz co przed wywołaniem funkcji było na tym stosie zapisane ? Przeważnie jakieś inne dane i wartości innych zmiennych automatycznych - więc pojawić się w tej komórce może cokolwiek - dlatego trzeba ją inicjować konkretną wartością i sam kompilator się o to dopomina warningami - nie zauważyłeś tego? Te zmienne automatyczne w przeciwieństwie do zmiennych globalnych NIE SĄ ZEROWANE ! zapamiętaj to. Zaś zmienne globalne - kompilator generuje kod który odpalany jest jeszcze przed funkcją main i ten kod zeruje dla ciebie wszystkie zmienne globalne żeby po restarcie nie pozostały tam jakieś ew śmieci ... no tak założyli twórcy języka C a ty musisz to po prostu przyjąć do wiadomości i pamiętać o tym

_________________
zapraszam na blog:
http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj
Kurs EAGLE ] [ mój kanał YT TV
www.youtube.com/mirekk36 ]