[C-Sprache] Verwendung von Statik

Inhaltsverzeichnis

statisch modifizierte lokale Variablen

Statisch modifizierte globale Variablen

statische Modifikatorfunktion

Zusammenfassen


statisch modifizierte lokale Variablen

Statisch modifizierte lokale Variablen können auch als statische lokale Variablen bezeichnet werden

Um Statik einzuführen, analysieren wir zunächst die laufenden Ergebnisse des folgenden Codes:

#include<stdio.h>
void test()
{
    int a = 5;
	a++;
	printf("%d ", a);
}
int main()
{
	int i = 0;
	while (i < 10)
	{
		test();
		i++;
	}
	return 0;
}

Es gibt eine Testfunktion im Code, und in der Testfunktion ist eine lokale Variable a definiert. Bei jedem Aufruf der Testfunktion wird a ein Leerzeichen im Speicher zugewiesen, der Anfangswert von a ist 5 und dann a wird um 1 erhöht. Wenn der Testfunktionsaufruf endet, wird die Variable a zerstört und der Speicherplatz für a wird beim nächsten Aufruf der Testfunktion neu zugewiesen. Und die Testfunktion wird insgesamt 10 Mal aufgerufen, sodass 10 6s auf dem Bildschirm erscheinen

Was passiert, wenn Sie das Schlüsselwort static vor a hinzufügen? Ist die Antwort immer noch 10 6s?

#include<stdio.h>
void test()
{
    static int a = 5;
	a++;
	printf("%d ", a);
}
int main()
{
	int i = 0;
	while (i < 10)
	{
		test();
		i++;
	}
	return 0;
}

 Wir haben festgestellt, dass sich das Ergebnis dieses Erscheinungsbildes von dem oben genannten unterscheidet: a scheint einen additiven Effekt zu haben

 Das folgende Analyseprinzip:

Teilen Sie den Speicher beim Erlernen von C/C++-Code grob in drei Bereiche ein: Stapelbereich, statischer Bereich und Heap-Bereich

 Die durch static geänderte Variable ist eine statische Variable. Aus der obigen Abbildung wissen wir bereits, dass die im statischen Bereich erstellte Variable erst am Ende des Programms zerstört wird, sodass die Variable a bei jedem Ende der Testfunktion nicht zerstört wird . Jedes Mal, wenn die Testfunktion aufgerufen wird, ist der Wert von a der Wert am Ende des vorherigen Aufrufs.

Daraus ist ersichtlich, dass bei der Änderung einer lokalen Variablen durch Statik eine lokale Variable ursprünglich im Stapelbereich vorhanden ist und bei der Änderung durch Statik im statischen Bereich vorhanden ist. Der Zeitraum wird länger, der Umfang bleibt jedoch erhalten Dasselbe.

 Der Unterschied zwischen statisch modifizierten lokalen Variablen und globalen Variablen: Statisch modifizierte lokale Variablen können nur im lokalen Bereich verwendet werden.

Statisch modifizierte globale Variablen

Statisch modifizierte globale Variablen können auch als statische globale Variablen bezeichnet werden

Wenn wir mehrere Dateien unter einem Projekt erstellen, wie unten gezeigt

 An diesem Punkt kann das Programm normal ausgeführt werden:

 Wenn wir jedoch die globale Variable g_val mit static ändern, meldet das Programm einen Fehler:

  Der Grund, warum der Fehler auftritt, ist das Hinzufügen von statischer Aufladung.

Statisch ändert die globale Variable und ändert das Link-Attribut der globalen Variablen von einem externen Link-Attribut in ein internes Link-Attribut. Diese statische Variable kann nur innerhalb der Quelldatei verwendet werden, in der sie sich befindet, und kann nicht in anderen Quelldateien verwendet werden. (Es fühlt sich an, als ob der Umfang kleiner wird)

statische Modifikatorfunktion

Statisch modifizierte Funktionen werden auch als statische Funktionen bezeichnet

Das Folgende ist ein Projekt, das zwei Dateien erstellt hat, die Datei add.c und die Datei test2.c

 Zu diesem Zeitpunkt wird das kompilierte Programm normal ausgeführt

Wenn wir Add jedoch mit static ändern, tritt im Programm ein Fehler auf, und die Fehlermeldung ist dieselbe wie bei der statischen Änderung der globalen Variablen:

Die statische Änderungsfunktion ist dieselbe wie die globale statische Änderungsvariable

Die Funktion selbst verfügt über ein externes Linkattribut, wird jedoch zu einem internen Linkattribut, wenn sie durch Static geändert wird, sodass diese Funktion nur innerhalb der Quelldatei verwendet werden kann, in der sie sich befindet, und nicht innerhalb anderer Dateien.

Zusammenfassen

statisch modifizierte lokale Variablen

        Die statische Änderung lokaler Variablen ändert den Lebenszyklus von Variablen, sodass statische lokale Variablen weiterhin außerhalb des Gültigkeitsbereichs vorhanden sind und der Lebenszyklus endet, wenn das Programm endet.

Statisch modifizierte globale Variablen

        Eine globale Variable wird durch Static geändert, sodass diese globale Variable nur in dieser Quelldatei und nicht in anderen Quelldateien verwendet werden kann.

statische Modifikatorfunktion

        Eine Funktion wird statisch geändert, sodass diese Funktion nur in dieser Quelldatei und nicht in anderen Quelldateien verwendet werden kann.


 

Supongo que te gusta

Origin blog.csdn.net/m0_73648729/article/details/130161171
Recomendado
Clasificación