C-Speicherklassen verstehen: Gültigkeitsbereich, Lebensdauer & Verwendung
Die auto-Speicherklasse ist die Standard-Speicherklasse für alle lokalen Variablen. Das Beispiel definiert zwei Variablen in derselben Speicherklasse. Die register-Speicherklasse wird verwendet, um lokale Variablen zu definieren, die in einem Register statt im RAM gespeichert werden sollen. Das bedeutet, die Variable hat eine maximale Größe gleich der Registergröße (meist ein Wort) und der unäre Die static-Speicherklasse weist den Compiler an, eine lokale Variable während der gesamten Lebensdauer des Programms beizubehalten, anstatt sie bei jedem Ein- und Austreten aus dem Gültigkeitsbereich zu erstellen und zu zerstören. Dadurch behalten lokale statische Variablen ihre Werte zwischen Funktionsaufrufen bei. Der In C bewirkt Ausgabe: Die extern-Speicherklasse wird verwendet, um eine Referenz auf eine globale Variable zu geben, die für ALLE Programmdateien sichtbar ist. Wenn Sie Wenn Sie mehrere Dateien haben und eine globale Variable oder Funktion definieren, die auch in anderen Dateien verwendet wird, wird Erste Datei: main.c Zweite Datei: support.c Hier wird Erzeugt das ausführbare Programm a.out. Bei Ausführung:
Die auto-Speicherklasse
{
int mount;
auto int month;
}auto kann nur innerhalb von Funktionen verwendet werden, also für lokale Variablen.Die register-Speicherklasse
&-Operator kann nicht auf sie angewendet werden (da sie keine Speicheradresse hat).{ register int miles; }register sollte nur für Variablen verwendet werden, die schnellen Zugriff benötigen, wie Zähler. Beachten Sie: register bedeutet nicht, dass die Variable definitiv in einem Register gespeichert wird – es ist nur ein Hinweis an den Compiler, der je nach Hardware und Implementierung befolgt wird oder nicht.Die static-Speicherklasse
static-Modifikator kann auch auf globale Variablen angewendet werden. Dies beschränkt den Gültigkeitsbereich der Variable auf die Datei, in der sie deklariert ist.static bei einer globalen Variable, dass nur eine Kopie dieses Members von allen Objekten seiner Klasse geteilt wird.Beispiel
#include <stdio.h>
void func(void);
static int count = 5; // globale statische Variable
int main() {
while(count--) {
func();
}
return 0;
}
void func(void) {
static int i = 5; // lokale statische Variable
i++;
printf("i ist %d und count ist %d\n", i, count);
}
i ist 6 und count ist 4
i ist 7 und count ist 3
i ist 8 und count ist 2
i ist 9 und count ist 1
i ist 10 und count ist 0Die extern-Speicherklasse
extern verwenden, kann die Variable nicht initialisiert werden; sie verweist lediglich auf einen zuvor definierten Speicherort.extern in der anderen Datei verwendet, um die Referenz auf die definierte Variable/Funktion bereitzustellen.#include <stdio.h>
int count;
extern void write_extern();
int main() {
count = 5;
write_extern();
return 0;
}
#include <stdio.h>
extern int count;
void write_extern(void) {
printf("count ist %d\n", count);
}
extern verwendet, um count in der zweiten Datei zu deklarieren, während die Definition in main.c liegt. Kompilieren:$ gcc main.c support.ccount ist 5
C Sprache
- C++ Klassen & Objekte: Praktischer Leitfaden zur objektorientierten Programmierung
- C++ Friend-Funktionen und Friend-Klassen: Zugriffskontrolle meistern
- C Speicherklassen verstehen: Gültigkeitsbereich, Lebensdauer und Performance
- C++ Structures vs. Classes: Praktischer Leitfaden für Embedded-Entwickler
- Pythons str.count(): Zeichen & Teilstrings zählen mit Beispielen
- Python list.count(): Experten-Guide mit praktischen Beispielen
- Java meistern: Objekte, Klassen und Kern-OOP-Konzepte verstehen
- C++ Speicherklassen: Scope, Lifetime & Verwendung
- C++ Interfaces: Abstrakte Klassen & Pure Virtual Functions
- C# Klassen: Blueprint für objektorientierte Programmierung