Heim > häufiges Problem > Was ist der Unterschied zwischen statischen Variablen und globalen Variablen?

Was ist der Unterschied zwischen statischen Variablen und globalen Variablen?

silencement
Freigeben: 2019-07-08 10:43:11
Original
8622 Leute haben es durchsucht

Was ist der Unterschied zwischen statischen Variablen und globalen Variablen?

Globale Variablen und statische Variablen

Statische Variablen, die in der Sprache C deklariert werden, haben zwei Eigenschaften:

1. Variablen werden im Programm global platziert Ablagebereich, so dass beim nächsten Aufruf die ursprüngliche Belegung erhalten bleiben kann. Dies ist der Unterschied zwischen Stack-Variablen und Heap-Variablen.

2. Variablen verwenden Statik, um dem Compiler mitzuteilen, dass sie nur innerhalb des Gültigkeitsbereichs der Variablen sichtbar sind. Das ist es, was es von globalen Variablen unterscheidet.

Tipps:

A. Wenn auf die globale Variable nur in einer einzelnen C-Datei zugegriffen wird, können Sie diese Variable in eine statische globale Variable ändern, um die Kopplung zwischen Modulen zu reduzieren 🎜>B. Wenn auf eine globale Variable nur von einer einzelnen Funktion zugegriffen wird, kann diese Variable in eine statische lokale Variable der Funktion geändert werden, um die Kopplung zwischen Modulen zu reduzieren.

C globale Variablen, statische globale Variablen, statische lokale Variablen, wir müssen das Wiedereintrittsproblem berücksichtigen.

D Wenn wir eine wiedereintrittsfähige Funktion benötigen, müssen wir die Verwendung statischer Variablen in der Funktion vermeiden : eine Funktion mit „interner Speicher“-Funktion)

E. Die Situation, in der statische Variablen in der Funktion verwendet werden müssen: Wenn der Rückgabewert einer Funktion beispielsweise ein Zeigertyp ist, muss er statisch sein Die Adresse der lokalen Variablen wird als Rückgabewert verwendet. Wenn es sich um einen Auto-Typ handelt, wird ein Fehlerzeiger zurückgegeben.

Das Hinzufügen von static vor einer Funktion macht die Funktion zu einer statischen Funktion. Die Bedeutung von „statisch“ bezieht sich hier jedoch nicht auf die Speichermethode, sondern auf den Umfang der Funktion, die auf diese Datei beschränkt ist (daher wird sie auch als interne Funktion bezeichnet). Der Vorteil der Verwendung interner Funktionen besteht darin, dass sich verschiedene Personen beim Schreiben unterschiedlicher Funktionen keine Gedanken darüber machen müssen, ob die von ihnen definierten Funktionen denselben Namen wie Funktionen in anderen Dateien haben.

Erweiterte Analyse: Der Begriff Statik hat eine ungewöhnliche Geschichte. Ursprünglich wurde das Schlüsselwort static in C eingeführt, um lokale Variablen anzuzeigen, die nach dem Verlassen eines Blocks noch vorhanden sind. Anschließend hat static in C eine zweite Bedeutung: Es wird zur Darstellung globaler Variablen und Funktionen verwendet, auf die andere Dateien nicht zugreifen können. Schließlich verwendet C++ dieses Schlüsselwort wieder und gibt ihm eine dritte Bedeutung, die sich von der vorherigen unterscheidet: Es bezeichnet Variablen und Funktionen, die zu einer Klasse gehören, und nicht zu einem bestimmten Objekt, das zu dieser Klasse gehört (dieselbe Bedeutung wie dieses Schlüsselwort in Java).

Der Unterschied zwischen globalen Variablen, statischen globalen Variablen, statischen lokalen Variablen und lokalen Variablen

Variablen können unterteilt werden in: globale Variablen, statische globale Variablen, statische lokale Variablen und lokale Variablen.

Je nach Speicherbereich werden globale Variablen, statische globale Variablen und statische lokale Variablen alle im statischen Speicherbereich des Speichers gespeichert, und lokale Variablen werden im Stapelbereich von gespeichert die Erinnerung.

Je nach Geltungsbereich sind globale Variablen nur innerhalb der Datei gültig, in der sie definiert sind. Statische lokale Variablen sind nur innerhalb der Funktion gültig, in der sie definiert sind. und werden vom Programm nur einmal zugewiesen. Speicher verschwindet die Variable nicht, nachdem die Funktion zurückgegeben wurde. Lokale Variablen sind innerhalb der Funktion, in der sie definiert sind, gültig, werden jedoch nach der Rückkehr der Funktion ungültig.

Der Beschreibung globaler Variablen (externer Variablen) wird statisch vorangestellt, um eine statische globale Variable zu bilden. Globale Variablen selbst sind statische Speichermethoden, und statische globale Variablen sind natürlich auch statische Speichermethoden. Es gibt keinen Unterschied zwischen den beiden in der Art und Weise, wie sie gespeichert werden. Der Unterschied zwischen den beiden besteht darin, dass der Geltungsbereich nicht statischer globaler Variablen das gesamte Quellprogramm umfasst. Wenn ein Quellprogramm aus mehreren Quelldateien besteht, sind nicht statische globale Variablen in jeder Quelldatei gültig. Statische globale Variablen beschränken ihren Gültigkeitsbereich, d. h. sie sind nur innerhalb der Quelldatei gültig, in der die Variable definiert ist, und können nicht in anderen Quelldateien desselben Quellprogramms verwendet werden. Da der Umfang statischer globaler Variablen auf eine Quelldatei beschränkt ist und nur von Funktionen in dieser Quelldatei gemeinsam genutzt werden kann, können Fehler in anderen Quelldateien vermieden werden.

Wie aus der obigen Analyse ersichtlich ist, ändert die Änderung einer lokalen Variablen in eine statische Variable ihre Speichermethode und ihre Lebensdauer. Wenn Sie eine globale Variable in eine statische Variable ändern, ändert sich ihr Gültigkeitsbereich und schränkt ihren Verwendungsbereich ein.

Eine statische Funktion unterscheidet sich von einem gewöhnlichen Funktionsumfang und ist nur innerhalb der Quelldatei gültig, in der die Variable definiert ist. Funktionen, die nur in der aktuellen Quelldatei verwendet werden, sollten als interne Funktionen (statisch) deklariert werden und interne Funktionen sollten in der aktuellen Quelldatei beschrieben und definiert werden. Funktionen, die außerhalb der aktuellen Quelldatei verwendet werden können, sollten in einer Header-Datei angegeben werden, und die Quelldateien, die diese Funktionen verwenden, sollten diese Header-Datei enthalten.

Was ist der Unterschied zwischen statischen globalen Variablen und gewöhnlichen globalen Variablen: Statische globale Variablen werden nur einmal initialisiert, um zu verhindern, dass sie in anderen Dateieinheiten referenziert werden.

Was sind die Unterschiede zwischen statischen lokalen Variablen? Variablen und gewöhnliche lokale Variablen? Was ist der Unterschied: Statische lokale Variablen werden nur einmal initialisiert und basieren beim nächsten Mal auf dem vorherigen Ergebniswert.

Was ist der Unterschied zwischen statischen Funktionen und gewöhnlichen Funktionen: statische Funktionen haben andere Gültigkeitsbereiche als gewöhnliche Funktionen, nur die Quelle der Variablen ist innerhalb der Datei definiert.

Globale Variablen und statische Variablen werden vom Compiler auf 0 initialisiert, wenn sie nicht manuell initialisiert werden. Die Werte lokaler Variablen sind nicht bekannt.

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen statischen Variablen und globalen Variablen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage