C Speicherklasse

In diesem Tutorial lernen Sie den Umfang und die Lebensdauer lokaler und globaler Variablen kennen. Außerdem lernen Sie statische Variablen und Registervariablen kennen.

Jede Variable in der C-Programmierung hat zwei Eigenschaften: Typ und Speicherklasse.

Typ bezieht sich auf den Datentyp einer Variablen. Die Speicherklasse bestimmt den Umfang, die Sichtbarkeit und die Lebensdauer einer Variablen.

Es gibt 4 Arten von Speicherklassen:

  1. automatisch
  2. extern
  3. statisch
  4. registrieren

Lokale Variable

Die in einem Block deklarierten Variablen sind automatische oder lokale Variablen. Die lokalen Variablen existieren nur innerhalb des Blocks, in dem sie deklariert sind.

Nehmen wir ein Beispiel.

 #include int main(void) ( for (int i = 0; i < 5; ++i) ( printf("C programming"); ) // Error: i is not declared at this point printf("%d", i); return 0; )

Wenn Sie das obige Programm ausführen, erhalten Sie eine nicht deklarierte Fehlerkennung i. Es ist, weil ich innerhalb des forSchleifenblocks deklariert bin . Außerhalb des Blocks ist es nicht deklariert.

Nehmen wir ein anderes Beispiel.

  int main() ( int n1; // n1 is a local variable to main() ) void func() ( int n2; // n2 is a local variable to func() ) 

Im obigen Beispiel ist n1 lokal für main()und n2 ist lokal für func().

Dies bedeutet, dass Sie nicht auf die Variable n1 zugreifen können, func()da sie nur im Inneren vorhanden ist main(). Ebenso können Sie nicht auf die Variable n2 im Inneren zugreifen, main()da sie nur im Inneren vorhanden ist func().

Globale Variable

Variablen, die außerhalb aller Funktionen deklariert werden, werden als externe oder globale Variablen bezeichnet. Sie sind von jeder Funktion im Programm aus zugänglich.

Beispiel 1: Globale Variable

 #include void display(); int n = 5; // global variable int main() ( ++n; display(); return 0; ) void display() ( ++n; printf("n = %d", n); ) 

Ausgabe

 n = 7

Angenommen, eine globale Variable wird in deklariert file1. Wenn Sie versuchen, diese Variable in einer anderen Datei zu verwenden file2, beschwert sich der Compiler. Um dieses Problem zu lösen, wird das Schlüsselwort externin verwendet, file2um anzugeben, dass die externe Variable in einer anderen Datei deklariert ist.

Variable registrieren

Das registerSchlüsselwort wird verwendet, um Registervariablen zu deklarieren. Registervariablen sollten schneller sein als lokale Variablen.

Moderne Compiler sind jedoch sehr gut in der Codeoptimierung, und es besteht die seltene Möglichkeit, dass die Verwendung von Registervariablen Ihr Programm schneller macht.

Sofern Sie nicht an eingebetteten Systemen arbeiten, in denen Sie wissen, wie Code für die jeweilige Anwendung optimiert werden kann, werden keine Registervariablen verwendet.

Statische Variable

Eine statische Variable wird mit dem staticSchlüsselwort deklariert. Beispielsweise;

 statisch int i;

Der Wert einer statischen Variablen bleibt bis zum Ende des Programms erhalten.

Beispiel 2: Statische Variable

 #include void display(); int main() ( display(); display(); ) void display() ( static int c = 1; c += 5; printf("%d ",c); ) 

Ausgabe

 6 11

Während des ersten Funktionsaufrufs wird der Wert von c auf 1 initialisiert. Sein Wert wird um 5 erhöht. Jetzt ist der Wert von c 6, was auf dem Bildschirm gedruckt wird.

Während des zweiten Funktionsaufrufs wird c nicht erneut auf 1 initialisiert. Das liegt daran, dass c eine statische Variable ist. Der Wert c wird um 5 erhöht. Jetzt ist sein Wert 11, der auf dem Bildschirm gedruckt wird.

Interessante Beiträge...