logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[C++] zmienna lokalna a zamienna globalna (wartości początkowe)

08 Paź 2020 09:51 735 5
REKLAMA
  • #1 18965341
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #2 18965413
    ex-or
    Poziom 28  
    Posty: 785
    Pomógł: 147
    Ocena: 151
    Zmienne globalne są alokowane w sekcji danych .bss i (jeśli niezainicjowane) są inicjowane zerem przed uruchomieniem programu. Zmienne lokalne są alokowane na stosie po wejściu w funkcję (w tym przypadku main) i nie są inicjowane. To wynika ze standardu języka.
    https://en.cppreference.com/w/cpp/language/initialization
    https://en.cppreference.com/w/cpp/language/default_initialization
  • REKLAMA
  • #3 18965427
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #4 18965450
    Zwierzak_PAH
    Poziom 29  
    Posty: 1129
    Pomógł: 127
    Ocena: 261
    kosmonauta80 napisał:
    Czy jest jakiś powód, dla którego jest sens deklarować zmienne wewnątrz main()?

    Globalna musi być unikalna.
    Lokalna może się powtarzać.
    Przy dużej ilości zmiennych robiąc to w lokalnych nie musimy pilnować aby przez pomyłkę jej nie powtórzyć.
  • REKLAMA
  • #5 18965489
    JacekCz
    Poziom 42  
    Posty: 8670
    Pomógł: 760
    Ocena: 1463
    kosmonauta80 napisał:
    Czy jest jakiś powód, dla którego jest sens deklarować zmienne wewnątrz main()?


    Jest DOKŁADNIE NA ODWRÓT.
    Deklarowanie wewnątrz funckji jest normalne.
    To trzeba miec specjalne powody, aby deklarować globalną (a w dodatku publiczną)

    Dodano po 3 [minuty]:

    ex-or napisał:
    Zmienne globalne są alokowane w sekcji danych .bss i (jeśli niezainicjowane) są inicjowane zerem przed uruchomieniem programu. Zmienne lokalne są alokowane na stosie po wejściu w funkcję (w tym przypadku main) i nie są inicjowane. To wynika ze standardu języka.
    https://en.cppreference.com/w/cpp/language/initialization
    https://en.cppreference.com/w/cpp/language/default_initialization


    Chyba że są obiektowe i posiadają konstruktor.
  • #6 18965532
    Konto nie istnieje
    Poziom 1  
REKLAMA