global und lokal



  • hallo ,
    ich versteh nicht so ganz was globale variablen, oder Konstanten sind.
    genauso wenig die lokalen... 😉
    kann mir das jemand erklären?? 😕
    thx 😋 🙂



  • Lokale Variablen werden automatisch zertört wenn du den Anweisungsblock verlässt. Ein Anweisungsblock ist gekennzeichnet durch { }. Globale Variablen sind während dem ganzen Programmlaufs für jede Funktion des Programms verfügbar.
    Man sollte wenn möglich auf globale Variablen verzichten, denn sie belegen auch wärend des gesamten Programmlaufs Speicher.

    Eine Konstante besagt einfach dass der Wert nicht geändert werden darf:

    double const Pi = 3.14;
    Pi = 2 // Fehler, Pi ist konstant und darf nicht geändert werden
    


  • Hallo!

    Lokale Variablen:

    Lokale Variablen müssen immer am Anfang eines Blocks definiert werden.

    Mit der Definition einer lokalen Variablens ist keine Initialisierung verbunden, für die Festlegung von Anfangswerten ist der Programmierer verantwortlich.

    Eine lokale Variable wird innerhalb eines Blocks definiert und ist außerhalb nicht sichtbar.

    Globale Variablen:

    Variablen, die außerhalb von Funktioen definiert werden nennt man globale Variablen weil sie programmweit sichtbar sind. Globale Variablen werden im Gegensatz zu lokalen bei ihrer Definition initialisiert.

    BSP:

    int i=4;

    main()
    {
    i++;
    }

    mfg k0st0n



  • k0st0n schrieb:

    Lokale Variablen müssen immer am Anfang eines Blocks definiert werden.

    Du kannst lokale Variablen erstellen wann immer du Lust und Laune hast, wann sie dann zur Programmlaufzeit auf den Stack gelegt werden ist wieder was anderes.



  • thx @all 🙂 🙂 😉
    hat mir sehr geholfen:)



  • k0st0n schrieb:

    Lokale Variablen müssen immer am Anfang eines Blocks definiert werden.

    Halleluja! 😮 Also diese Information stammt aus der Steinzeit, heutzutage ist selbst der C Standard so weit diesen Schwachsinn nicht mehr zu verlangen. Für C++ war das schon immer falsch. Es ist sogar schlecht seine Variablen am Anfang eines Blocks zu definiren und nicht da wo man sie braucht. Unübersichtlich und oft auch langsamer (für nicht triviale Typen!).

    Oft nennt man lokale Variablen auch noch automatische Variablen weil sie sich automatisch beim Verlassen eines Blockes zerstören.

    k0st0n schrieb:

    Globale Variablen werden im Gegensatz zu lokalen bei ihrer Definition initialisiert.

    Eigentlich richtig aber nicht in deinem Sinn. Globale Variablen müssen nicht explicit initialisiert werden, allerdings werden sie im statischen Speicher angelegt und alle Bits in diesem werden beim Programstart auf 0 gesetzt. Bei vielen Typen kommt das einer Initialisierung mit 0 gleich.



  • Ben04 schrieb:

    k0st0n schrieb:

    Globale Variablen werden im Gegensatz zu lokalen bei ihrer Definition initialisiert.

    Eigentlich richtig aber nicht in deinem Sinn. Globale Variablen müssen nicht explicit initialisiert werden, allerdings werden sie im statischen Speicher angelegt und alle Bits in diesem werden beim Programstart auf 0 gesetzt. Bei vielen Typen kommt das einer Initialisierung mit 0 gleich.

    Das stimmt so nur für PODs. UDTs die keine PODs sind werden Default-Initialisiert. In einer über Übersetzungseinheiten undefinierten Reihenfolge werden also ihre Default-Konstruktoren aufgerufen.


Anmelden zum Antworten