Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> C Sprache

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:

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

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,

  1. Konsolenanwendung auswählen
  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

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

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 FunktionenMemoryZeroGlobalProgrammlaufzeit

Zusammenfassung

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


C Sprache

  1. C#-Klasse und -Objekt
  2. Statisches C#-Schlüsselwort
  3. Verschachtelte C#-Klasse
  4. C++-Klassen und -Objekte
  5. C++ Friend-Funktion und Friend-Klassen
  6. C++-Klassenvorlagen
  7. C Lagerklasse
  8. C - Speicherklassen
  9. Speicherklassen in C++
  10. Schnittstellen in C++ (Abstrakte Klassen)