Was bedeutet statisch in ANSI-C [Duplikat
Frage
Mögliches Duplikat:
Was bedeutet „statisch“ in einem C -Programm?
Was macht das static
Schlüsselwort in c?
Ich benutze ANSI-C. Ich habe in mehreren Code -Beispielen gesehen, sie verwenden die static
Schlüsselwort vor Variablen und vor Funktionen. Was ist der Zweck bei der Verwendung mit einer Variablen? Und was ist der Zweck bei der Verwendung mit einer Funktion?
Lösung
Nur als kurze Antwort gibt es zwei Verwendungen für die static
Schlüsselwort beim Definieren von Variablen:
1- Variablen im Dateibereich definiert mit static
Stichwort, dh Definierte Außenfunktionen sind nur innerhalb dieser Datei sichtbar. Jeder Versuch, aus anderen Dateien auf sie zugreifen zu können, führt zu einem ungelösten Symbol zum Verknüpfungszeit.
2- Variablen definiert als static
In einem Block innerhalb einer Funktion bleibt oder "überleben" über verschiedene Aufrufe desselben Codeblocks hinweg. Wenn sie initialisiert definiert sind, werden sie nur einmal initialisiert. static
Es wird normalerweise garantiert, dass Variablen initialisiert werden, um zu initialisiert zu werden 0
standardmäßig.
Andere Tipps
static
Innerhalb des Körpers einer Funktion führt der IE, der als variabler Speicherklassifizierer verwendet wird, diese Variable, um ihren Wert zwischen Funktionsaufrufen zu erhalten - man könnte sagen, dass eine statische Variable innerhalb einer Funktion nur für diese Funktion sichtbar ist. Diese Verwendung von static
macht die Funktion immer, sie wird im Thread verwendet unsicher Sie sollten es vermeiden.
Der andere Anwendungsfall wird verwendet static
Im globalen Bereich sind dh für globale Variablen und Funktionen: statische Funktionen und globale Variable lokal zur Kompiliereinheit, dh sie werden in der Exporttabelle des kompilierten Binärobjekts nicht angezeigt. Sie verschmutzen also den Namespace nicht. Es ist eine gute Idee, statisch alle Funktionen und globalen Variablen zu deklarieren, um nicht von außerhalb der Kompiliereinheit (dh C -Datei) zugänglich zu sein! Beachten Sie nur, dass statische Variablen nicht in Header -Dateien platziert werden dürfen (außer sehr seltene Sonderfälle).