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

C Speicherklassen verstehen: Gültigkeitsbereich, Lebensdauer und Performance

C Speicherklassen verstehen

Erkunden Sie, wie automatic, external, static und register Speicherklassen den Gültigkeitsbereich, die Lebensdauer und die Performance einer Variable in C definieren.

Automatische (Lokale) Variablen

Variablen, die innerhalb eines Blocks deklariert sind, sind automatisch, auch als lokale Variablen bekannt. Sie existieren nur innerhalb dieses Blocks und werden zerstört, wenn der Block endet.

#include <stdio.h> int main(void) { for (int i = 0; i < 5; ++i) { printf("C Programmierung\n"); } // Fehler: i ist in diesem Gültigkeitsbereich nicht deklariert printf("%d", i); return 0; } 

Die Ausführung dieses Programms ergibt einen undeclared identifier i Fehler, da i nur innerhalb des for Schleifenblocks deklariert ist.

int main() { int n1; // lokal zu main() } void func() { int n2; // lokal zu func() } 

Hier ist n1 innerhalb von func() unzugänglich, und n2 ist innerhalb von main() unzugänglich.

Globale (Externe) Variablen

Variablen, die außerhalb aller Funktionen deklariert sind, sind global oder extern. Sie können von jeder Funktion innerhalb derselben Translationseinheit zugegriffen werden. Wenn eine globale Variable in einer Datei definiert, aber in einer anderen verwendet wird, signalisiert das extern Schlüsselwort, dass die Definition anderswo liegt.

Beispiel: Globale Variable

#include <stdio.h> void display(); int n = 5; // globale Variable int main() { ++n; display(); return 0; } void display() { ++n; printf("n = %d\n", n); } 

Ausgabe

n = 7

Wenn n in file1.c definiert und in file2.c verwendet wird, fügen Sie extern int n; am Anfang von file2.c hinzu, um einen Kompilierfehler zu vermeiden.

Register-Variablen

Das register Schlüsselwort deutet an, dass der Compiler die Variable in einem CPU-Register speichern sollte, um den Zugriff zu beschleunigen. Moderne Compiler führen aggressive Optimierungen durch, was den Hinweis oft überflüssig macht. Verwenden Sie register nur, wenn Profiling einen kritischen Flaschenhals auf eingebetteten Systemen anzeigt.

Statische Variablen

Statische Variablen werden mit static deklariert und behalten ihren Wert für die gesamte Programmausführung bei. Sie werden nur einmal beim Programmstart initialisiert und existieren bis zur Programmdauer.

Beispiel: Statische Variable

#include <stdio.h> void display(); int main() { display(); display(); } void display() { static int c = 1; c += 5; printf("%d ", c); } 

Ausgabe

6 11

Beim ersten Aufruf wird c auf 1 initialisiert, dann auf 6 erhöht. Beim zweiten Aufruf behält c seinen vorherigen Wert von 6 bei, wird auf 11 erhöht und ausgegeben.

Auf Dateiebene gibt eine static Deklaration der Variable interne Verknüpfung, was sie für andere Translationseinheiten unsichtbar macht – ein nützliches Feature für Kapselung.

Laut ISO C-Standard stellt das Verhalten von static eine einzelne Instanz über alle Funktionsaufrufe hinweg sicher, was für zustandsbehaftete Operationen ohne globale Verschmutzung kritisch ist.

C Sprache

  1. C# Variablen & Primitive Datentypen meistern: Der komplette Guide
  2. Variablengültigkeitsbereich in C# verstehen: Klassen-, Methoden- und Blockebene
  3. C# Static Keyword: Statische Variablen, Methoden und Klassen meistern
  4. C++ Klassentemplates meistern: Ein praktischer Leitfaden
  5. C Variablen, Konstanten und Literale: Ein vollständiger Leitfaden
  6. C++ Variablen und Datentypen: Experten‑Guide zu int, double, char, string, bool
  7. Java Variablentypen verstehen: Ein umfassender Leitfaden
  8. Variablen in C verstehen: Typen, Benennungsregeln & Speicherverwaltung
  9. C-Speicherklassen verstehen: Gültigkeitsbereich, Lebensdauer & Verwendung
  10. C-Gültigkeitsbereiche verstehen: Lokale, Globale & Formale Variablen