Speicherklassen in C: Auto, Extern, Statisch, Registerklasse in C.

Inhaltsverzeichnis:

Anonim

Was ist die Speicherklasse in C?

Eine Speicherklasse repräsentiert die Sichtbarkeit und den Speicherort einer Variablen. Es zeigt an, von welchem ​​Teil des Codes aus wir auf eine Variable zugreifen können. Eine Speicherklasse in C wird verwendet, um die folgenden Dinge zu beschreiben:

  • Der variable Bereich.
  • Der Ort, an dem die Variable gespeichert wird.
  • Der initialisierte Wert einer Variablen.
  • Eine Lebensdauer einer Variablen.
  • Wer kann auf eine Variable zugreifen?

Somit wird eine Speicherklasse verwendet, um die Informationen über eine Variable darzustellen.

ANMERKUNG: Eine Variable ist nicht nur einem Datentyp, seinem Wert, sondern auch einer Speicherklasse zugeordnet.

Es gibt insgesamt vier Arten von Standardspeicherklassen. Die folgende Tabelle zeigt die Speicherklassen in C.

Speicherklasse Zweck
Auto Es ist eine Standardspeicherklasse.
extern Es ist eine globale Variable.
statisch Es ist eine lokale Variable, die einen Wert zurückgeben kann, selbst wenn die Steuerung an den Funktionsaufruf übertragen wird.
registrieren Es ist eine Variable, die in einem Register gespeichert ist.

In diesem C-Tutorial lernen Sie verschiedene Arten von Speicherklassen in C anhand von Beispielen kennen:

  • Automatische Speicherklasse in C.
  • Externe Speicherklasse in C.
    • Erste Datei: main.c
    • Zweite Datei: original.c
  • Statische Speicherklasse in C.
  • Registrieren Sie die Speicherklasse in C.

Automatische Speicherklasse in C.

Die mit der automatischen Speicherklasse definierten Variablen werden als lokale Variablen bezeichnet. Auto steht für automatische Speicherklasse. Eine Variable befindet sich standardmäßig in der automatischen Speicherklasse, wenn sie nicht explizit angegeben ist.

Der Umfang einer automatischen Variablen ist nur auf den jeweiligen Block beschränkt. Sobald die Steuerung den Block verlässt, wird der Zugriff zerstört. Dies bedeutet, dass nur der Block, in dem die automatische Variable deklariert ist, darauf zugreifen kann.

Ein Schlüsselwort auto wird verwendet, um eine automatische Speicherklasse zu definieren. Standardmäßig enthält eine automatische Variable einen Garbage-Wert.

Example, auto int age;

Das folgende Programm definiert eine Funktion mit zwei lokalen Variablen

int add(void) {int a=13;auto int b=48;return a+b;}

Wir nehmen ein anderes Programm, das die Bereichsstufe "Sichtbarkeitsstufe" für automatische Variablen in jedem Blockcode anzeigt, die unabhängig voneinander sind:

#include int main( ){auto int j = 1;{auto int j= 2;{auto int j = 3;printf ( " %d ", j);}printf ( "\t %d ",j);}printf( "%d\n", j);}

AUSGABE:

 3 2 1 

Externe Speicherklasse in C.

Extern steht für externe Speicherklasse. Die externe Speicherklasse wird verwendet, wenn globale Funktionen oder Variablen vorhanden sind, die von zwei oder mehr Dateien gemeinsam genutzt werden.

Das Schlüsselwort extern wird verwendet, um eine globale Variable oder Funktion in einer anderen Datei zu deklarieren und die Referenz der Variablen oder Funktion bereitzustellen, die bereits in der Originaldatei definiert wurden.

Die mit einem externen Schlüsselwort definierten Variablen werden als globale Variablen bezeichnet. Auf diese Variablen kann im gesamten Programm zugegriffen werden. Beachten Sie, dass die externe Variable nicht initialisiert werden kann. Sie wurde bereits in der Originaldatei definiert.

Example, extern void display();

Erste Datei: main.c

#include extern i;main() {printf("value of the external integer is = %d\n", i);return 0;}

Zweite Datei: original.c

#include i=48;

Ergebnis:

 value of the external integer is = 48

Führen Sie die folgenden Schritte aus, um den obigen Code zu kompilieren und auszuführen

Schritt 1) Neues Projekt erstellen,

  1. Wählen Sie Konsolenanwendung
  2. Klicken Sie auf Los

Schritt 2) Wählen Sie C und klicken Sie auf Weiter

Schritt 3) Klicken Sie auf Weiter

Schritt 4) Geben Sie Details ein und klicken Sie auf Weiter

Schritt 5) Klicken Sie auf Fertig stellen

Schritt 6) Fügen Sie den Hauptcode wie im vorherigen Programm gezeigt in die Datei main.c ein und speichern Sie ihn

Schritt 7) Erstellen Sie eine neue C-Datei [Datei -> Neu -> Leere Datei, speichern Sie sie (als original.c) und fügen Sie sie dem aktuellen Projekt hinzu, indem Sie im Dialogfeld auf "OK" klicken.

Schritt 8) Fügen Sie den C-Code der im vorherigen Beispiel gezeigten Datei original.c ohne die Funktion main () ein und speichern Sie sie.

Schritt 9) Erstellen Sie Ihr Projekt und führen Sie es aus. Das Ergebnis ist in der nächsten Abbildung dargestellt

Statische Speicherklasse in C.

Die statischen Variablen werden innerhalb der Funktion / Datei als lokale statische Variablen verwendet. Sie können auch als globale Variable verwendet werden

  • Statische lokale Variable ist eine lokale Variable, die ihren Wert zwischen Funktionsaufrufen oder Blöcken beibehält und speichert und nur für die Funktion oder den Block sichtbar bleibt, in dem sie definiert ist.
  • Statische globale Variablen sind globale Variablen, die nur für die Datei sichtbar sind , in der sie deklariert sind.
Example: static int count = 10;

Beachten Sie, dass die statische Variable den Standardanfangswert Null hat und nur einmal in ihrer Lebensdauer initialisiert wird.

#include  /* function declaration */void next(void);static int counter = 7; /* global variable */main() {while(counter<10) {next();counter++; }return 0;}void next( void ) { /* function definition */static int iteration = 13; /* local static variable */iteration ++;printf("iteration=%d and counter= %d\n", iteration, counter);}

Ergebnis:

iteration=14 and counter= 7iteration=15 and counter= 8iteration=16 and counter= 9

Auf globale Variablen kann in der gesamten Datei zugegriffen werden, während auf statische Variablen nur auf den bestimmten Teil eines Codes zugegriffen werden kann.

Die Lebensdauer einer statischen Variablen befindet sich im gesamten Programmcode. Eine Variable, die mit dem statischen Schlüsselwort deklariert oder initialisiert wird, enthält immer Null als Standardwert.

Registrieren Sie die Speicherklasse in C.

Sie können die Registerspeicherklasse verwenden, wenn Sie lokale Variablen in Funktionen oder Blöcken in CPU-Registern anstelle von RAM speichern möchten, um schnell auf diese Variablen zugreifen zu können. Zum Beispiel sind "Zähler" ein guter Kandidat, um im Register gespeichert zu werden.

Example: register int age;

Das Schlüsselwort - Register wird verwendet , um eine Registerspeicherklasse zu erklären. Die mit der Registerspeicherklasse deklarierten Variablen haben im gesamten Programm eine Lebensdauer.

Es ähnelt der automatischen Speicherklasse. Die Variable ist auf den jeweiligen Block beschränkt. Der einzige Unterschied besteht darin, dass die mit der Registerspeicherklasse deklarierten Variablen in CPU-Registern anstelle eines Speichers gespeichert werden. Das Register hat einen schnelleren Zugriff als das des Hauptspeichers.

Die mit der Registerspeicherklasse deklarierten Variablen haben keinen Standardwert. Diese Variablen werden häufig zu Beginn eines Programms deklariert.

#include  /* function declaration */main() {{register int weight;int *ptr=&weight ;/*it produces an error when the compilation occurs ,we cannot get a memory location when dealing with CPU register*/}}

AUSGABE:

error: address of register variable 'weight' requested

In der folgenden Tabelle sind die Hauptmerkmale jeder Speicherklasse zusammengefasst, die üblicherweise in der C-Programmierung verwendet werden

Speicherklasse Erklärung Lager Standardanfangswert Umfang Lebensdauer
Auto Innerhalb einer Funktion / eines Blocks Erinnerung Unberechenbar Innerhalb der Funktion / des Blocks Innerhalb der Funktion / des Blocks
registrieren Innerhalb einer Funktion / eines Blocks CPU-Register Müll Innerhalb der Funktion / des Blocks Innerhalb der Funktion / des Blocks
extern Außerhalb aller Funktionen Erinnerung Null Die gesamte Datei und andere Dateien, in denen die Variable als extern deklariert ist Programmlaufzeit
Statisch (lokal) Innerhalb einer Funktion / eines Blocks Erinnerung Null Innerhalb der Funktion / des Blocks Programmlaufzeit
Statisch (global) Außerhalb aller Funktionen Erinnerung Null Global Programmlaufzeit

Zusammenfassung

In diesem Tutorial haben wir Speicherklassen in C besprochen, um Folgendes zusammenzufassen:

  • Eine Speicherklasse in C wird verwendet, um zusätzliche Informationen zu einer Variablen darzustellen.
  • Die Speicherklasse repräsentiert den Umfang und die Lebensdauer einer Variablen.
  • Außerdem wird angegeben, wer von wo auf eine Variable zugreifen kann.
  • Auto, extern, register, static sind die vier verschiedenen Speicherklassen in einem C-Programm.
  • Ein Speicherklassenspezifizierer in der Sprache C wird verwendet, um Variablen, Funktionen und Parameter zu definieren.
  • auto wird für eine lokale Variable verwendet, die innerhalb eines Blocks oder einer Funktion definiert ist
  • Das Register wird verwendet, um die Variable in den CPU-Registern zu speichern, anstatt den Speicherort für den schnellen Zugriff.
  • Statisch wird sowohl für globale als auch für lokale Variablen verwendet. Jeder hat seinen Anwendungsfall innerhalb eines C-Programms.
  • Extern wird für die gemeinsame Nutzung von Daten zwischen C-Projektdateien verwendet.