Was ist der Unterschied zwischen lokalen statischen und globalen statischen Variablen?


Antwort 1:

Wann immer wir eine Variable deklarieren, deklarieren wir ihren Speicher und ihren Datentyp. Ihr Umfang hängt davon ab, wo wir sie deklarieren.

Globale Variablen werden außerhalb aller Funktionen deklariert. Globale Variablen werden im Datensegment des Prozesses gespeichert. Die Lebensdauer der globalen Variablen beträgt bis zur Lebensdauer des Programms und andere Dateien können mit dem Schlüsselwort extern darauf zugreifen.

Statische Variablen können außerhalb aller Funktionen oder innerhalb einer Funktion mit dem Schlüsselwort static vor dem Datentyp der Variablen deklariert werden. Wenn statische Variablen außerhalb aller Funktionen deklariert werden, hat sie einen globalen Gültigkeitsbereich oder sie werden innerhalb einer Funktion deklariert. Sie haben einen Gültigkeitsbereich innerhalb einer Funktion und bleiben bis zur Lebensdauer des Programms erhalten. Statische Variablen werden zum Zeitpunkt der Deklaration nur einmal initialisiert. Auf statische Variablen können andere Dateien mit externen Schlüsselwörtern nicht zugreifen.


Antwort 2:

Statische Variablen: bedeutet, dass sie mit dem Programm selbst sterben. Dies bedeutet, dass der Speicher zugewiesen und niemals implizit freigegeben wird.

Global: Auf diese Variablen kann von überall aus zugegriffen werden.

Lokal: Auf diese Variablen kann nur innerhalb ihres Bereichs zugegriffen werden.

Sie sehen also, dass SCOPES & LIFETIMES zwei verschiedene Dinge sind.

Eine global_static-Variable ist also nur eine statische Variable, die ständig Speicher erhält und jederzeit und überall aufgerufen werden kann.

Und eine local_static-Variable ist nur eine statische Variable, auf die außerhalb des Bereichs nicht zugegriffen werden kann. Wenn der Compiler diesen Code jedoch nicht optimiert, verbleibt er unnötig im Speicher.


Antwort 3:

Statische Variablen: bedeutet, dass sie mit dem Programm selbst sterben. Dies bedeutet, dass der Speicher zugewiesen und niemals implizit freigegeben wird.

Global: Auf diese Variablen kann von überall aus zugegriffen werden.

Lokal: Auf diese Variablen kann nur innerhalb ihres Bereichs zugegriffen werden.

Sie sehen also, dass SCOPES & LIFETIMES zwei verschiedene Dinge sind.

Eine global_static-Variable ist also nur eine statische Variable, die ständig Speicher erhält und jederzeit und überall aufgerufen werden kann.

Und eine local_static-Variable ist nur eine statische Variable, auf die außerhalb des Bereichs nicht zugegriffen werden kann. Wenn der Compiler diesen Code jedoch nicht optimiert, verbleibt er unnötig im Speicher.


Antwort 4:

Statische Variablen: bedeutet, dass sie mit dem Programm selbst sterben. Dies bedeutet, dass der Speicher zugewiesen und niemals implizit freigegeben wird.

Global: Auf diese Variablen kann von überall aus zugegriffen werden.

Lokal: Auf diese Variablen kann nur innerhalb ihres Bereichs zugegriffen werden.

Sie sehen also, dass SCOPES & LIFETIMES zwei verschiedene Dinge sind.

Eine global_static-Variable ist also nur eine statische Variable, die ständig Speicher erhält und jederzeit und überall aufgerufen werden kann.

Und eine local_static-Variable ist nur eine statische Variable, auf die außerhalb des Bereichs nicht zugegriffen werden kann. Wenn der Compiler diesen Code jedoch nicht optimiert, verbleibt er unnötig im Speicher.