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?

War es hilfreich?

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).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top