Speicherklassen in C:auto, extern, static, Registerklasse in C
Was ist die Speicherklasse in C?
Eine Speicherklasse repräsentiert die Sichtbarkeit und einen Speicherort einer Variablen. Es sagt aus, von welchem Teil des Codes wir auf eine Variable zugreifen können. Eine Speicherklasse in C wird verwendet, um die folgenden Dinge zu beschreiben:
- Der Gültigkeitsbereich der Variablen.
- 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.
HINWEIS:Eine Variable ist nicht nur einem Datentyp, seinem Wert, sondern auch einer Speicherklasse zugeordnet.
Es gibt insgesamt vier Arten von Standardspeicherklassen. Die folgende Tabelle stellt die Speicherklassen in C dar.
Speicherklasse Zweck automatisch Es ist eine Standardspeicherklasse.extern Es ist eine globale Variable.statisch Es ist eine lokale Variable, die auch dann einen Wert zurückgeben kann, wenn die Kontrolle an den Funktionsaufruf übergeben wird.register Es ist eine Variable, die in einem Register gespeichert wird.In diesem C-Tutorial lernen Sie verschiedene Arten von Speicherklassen in C anhand von Beispielen kennen-
- Auto-Storage-Klasse in C
- Externe Speicherklasse in C
- Erste Datei:main.c
- Zweite Datei:original.c
- Statische Speicherklasse in C
- Speicherklasse in C registrieren
Auto-Storage-Klasse in C
Die mit der Auto-Storage-Klasse definierten Variablen werden als lokale Variablen bezeichnet. Auto steht für automatische Speicherklasse. Eine Variable befindet sich standardmäßig in der Auto-Storage-Klasse, wenn sie nicht explizit angegeben ist.
Der Geltungsbereich einer Auto-Variablen ist nur auf den jeweiligen Block beschränkt. Sobald die Steuerung den Block verlässt, wird der Zugang zerstört. Das bedeutet, dass nur der Block, in dem die Auto-Variable deklariert ist, darauf zugreifen kann.
Ein Schlüsselwort auto wird verwendet, um eine automatische Speicherklasse zu definieren. Standardmäßig enthält eine Auto-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 Scope-Ebene „Sichtbarkeitsebene“ für Auto-Variablen in jedem Blockcode anzeigt, die unabhängig voneinander sind:
#include <stdio.h> 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 External Storage Class. Die externe Speicherklasse wird verwendet, wenn wir globale Funktionen oder Variablen haben, die von zwei oder mehr Dateien gemeinsam genutzt werden.
Stichwort extern wird verwendet, um eine globale Variable oder Funktion in einer anderen Datei zu deklarieren, um die Referenz auf eine Variable oder Funktion bereitzustellen, die bereits in der Originaldatei definiert wurden.
Die mit einem extern-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, da sie bereits in der Originaldatei definiert wurde.
Example, extern void display();
Erste Datei:main.c
#include <stdio.h> extern i; main() { printf("value of the external integer is = %d\n", i); return 0;}
Zweite Datei:original.c
#include <stdio.h> i=48;
Ergebnis:
value of the external integer is = 48
Um den obigen Code zu kompilieren und auszuführen, führen Sie die folgenden Schritte aus
Schritt 1) Neues Projekt erstellen,
- Konsolenanwendung auswählen
- 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
Schritt 6) Fügen Sie den Hauptcode wie im vorherigen Programm gezeigt in die Datei main.c ein und speichern Sie sie
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 in der Dialogbox auf „OK“ klicken .
Schritt 8) Setzen und speichern Sie den C-Code der original.c-Datei, die im vorherigen Beispiel gezeigt wurde, ohne die main()-Funktion.
Schritt 9) Erstellen und führen Sie Ihr Projekt aus. Das Ergebnis ist in der nächsten Abbildung zu sehen
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 behä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;
Denken Sie daran, dass die statische Variable einen standardmäßigen Anfangswert von Null hat und nur einmal in ihrer Lebensdauer initialisiert wird.
#include <stdio.h> /* 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= 7 iteration=15 and counter= 8 iteration=16 and counter= 9
Auf globale Variablen kann in der gesamten Datei zugegriffen werden, während auf statische Variablen nur für einen bestimmten Teil eines Codes zugegriffen werden kann.
Die Lebensdauer einer statischen Variablen liegt im gesamten Programmcode. Eine Variable, die mit dem Schlüsselwort static deklariert oder initialisiert wird, enthält immer Null als Standardwert.
Speicherklasse in C registrieren
Sie können die Registerspeicherklasse verwenden, wenn Sie lokale Variablen innerhalb von Funktionen oder Blöcken in CPU-Registern statt im RAM speichern möchten, um schnellen Zugriff auf diese Variablen zu haben. Beispielsweise sind „Zähler“ ein guter Kandidat, um im Register gespeichert zu werden.
Example: register int age;
Das Schlüsselwort registrieren wird verwendet, um eine Registerspeicherklasse zu deklarieren. Die unter Verwendung der Registerspeicherklasse deklarierten Variablen haben eine Lebensdauer im gesamten Programm.
Es ähnelt der Auto-Storage-Klasse. Die Variable ist auf den jeweiligen Block beschränkt. Der einzige Unterschied besteht darin, dass die mit der Registerspeicherklasse deklarierten Variablen in CPU-Registern statt in einem Speicher gespeichert werden. Das Register hat einen schnelleren Zugriff als der Hauptspeicher.
Die unter Verwendung der Registerspeicherklasse deklarierten Variablen haben keinen Standardwert. Diese Variablen werden oft am Anfang eines Programms deklariert.
#include <stdio.h> /* 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
Die nächste Tabelle fasst die Hauptmerkmale jeder Speicherklasse zusammen, die üblicherweise in der C-Programmierung verwendet werden
Speicherklasse Erklärung Speicherung Standardanfangswert Geltungsbereich Lebensdauer automatisch Innerhalb einer Funktion/eines BlocksMemoryUnpredictableWithin the function/blockWithin the function/blockregister Innerhalb einer Funktion/eines BlocksCPU RegistersGarbageWithin the function/blockWithin the function/blockextern Außerhalb aller FunktionenMemoryZeroEntire die Datei und andere Dateien, in denen die Variable als externprogram runtimeStatic (local) deklariert ist Innerhalb einer Funktion/eines BlocksMemoryZeroInnerhalb der Funktions-/BlockprogrammlaufzeitStatisch (global) Außerhalb aller FunktionenMemoryZeroGlobalProgrammlaufzeitZusammenfassung
In diesem Tutorial haben wir Speicherklassen in C besprochen, um es zusammenzufassen:
- Eine Speicherklasse in C wird verwendet, um zusätzliche Informationen über eine Variable darzustellen.
- Die Speicherklasse repräsentiert den Geltungsbereich und die Lebensdauer einer Variablen.
- Sie teilt auch mit, wer von wo aus auf eine Variable zugreifen kann?
- Auto, extern, register, static sind die vier verschiedenen Speicherklassen in einem C-Programm.
- Ein Speicherklassenbezeichner in C-Sprache 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
- register wird verwendet, um die Variable in CPU-Registern statt im Speicherort für schnellen Zugriff zu speichern.
- Static wird sowohl für globale als auch für lokale Variablen verwendet. Jeder hat seinen Anwendungsfall innerhalb eines C-Programms.
- Extern wird für den Datenaustausch zwischen C-Projektdateien verwendet.
C Sprache