type qualifiers storage classes c
Bedeutung von Typqualifizierern und Speicherklassen in C ++.
In diesem Exklusive C ++ - Schulungsserie In diesem Lernprogramm werden wir das Thema Variablen weiter erweitern und Typqualifizierer und Speicherklassen in C ++ sehen. Obwohl dies ein kleines Thema ist, ist es für die C ++ - Programmierung sehr wichtig und bedeutsam.
Die Typqualifizierer in C ++ ändern nicht die Bedeutung der Variablen oder Entitäten, mit denen sie verwendet werden, sondern fügen der Entität nur zusätzliche Informationen hinzu.
Was du lernen wirst:
Geben Sie Qualifiers in C ++ ein
Typqualifizierer in C ++ fügen der Variablen zusätzliche Eigenschaften hinzu, z. B. eine Variable, die eine Konstante oder eine flüchtige Variable ist.
Typqualifizierer drücken die Art und Weise aus, wie auf eine Variable zugegriffen wird oder wo eine Variable im Speicher gespeichert wird, indem die Bedeutung oder Interpretation der Variablen beibehalten wird. In gewisser Weise fügen Typqualifizierer Variablen mehr Verfeinerung hinzu.
In C ++ wird der Typqualifizierer unmittelbar vor dem Typspezifizierer (Datentyp) der Variablen angegeben.
Typqualifizierer in C ++ werden wie folgt klassifiziert:
# 1) const
Der Typbezeichner 'const' definiert die Objekte vom Typ const. Ein const-Objekt oder eine Variable kann nach der Deklaration nicht mehr geändert werden. Wenn versucht wird, ein const-Objekt oder eine Variable zu ändern, gibt der Compiler einen Fehler aus. Konstanten / Literale haben wir bereits in unserem vorherigen Tutorial gesehen.
Die Definition von Konstanten mit dem Schlüsselwort 'const' entspricht dem Typqualifizierer 'const'.
# 2) flüchtig
Das Typqualifikationsmerkmal 'flüchtig' bedeutet, dass der Wert der als flüchtig gekennzeichneten Variablen auf andere Weise geändert werden kann, die nicht vom Programm angegeben werden. Die Variablen, die volatil sind, ändern sich normalerweise aufgrund einiger externer Faktoren und nicht unbedingt aufgrund des Programms. Mit anderen Worten, sie sind von Natur aus flüchtig.
Zum Beispiel, Eine Variable, die die Temperatur in einem realen Wort liest, kann flüchtig gemacht werden, da die Lesetemperatur möglicherweise nicht vollständig vom Programm gesteuert wird.
# 3) veränderlich
Durch das Qualifikationsmerkmal 'veränderbar' können die Mitglieder oder Variablen geändert werden.
Das veränderbare Qualifikationsmerkmal wird normalerweise auf nicht statische Klassenmitglieder vom Typ non-const und non-reference angewendet. In bestimmten Situationen müssen möglicherweise einige Variablen unveränderlich bleiben (können nicht geändert werden) und einige Variablen müssen veränderbar sein. Diese Art von Qualifizierer ist sehr hilfreich, wenn wir veränderbare Eigenschaften wünschen.
Speicherklassen in C ++
Bisher haben wir alle C ++ - Variablen ausführlich besprochen. Wir haben gesehen, dass Variablen mit ihren jeweiligen Datentypen deklariert und dann im Programm verwendet werden. Um eine Variable vollständig zu definieren, benötigen wir neben ihren Datentypen auch Speicherklassen.
Obwohl wir bisher keine Speicherklassen für Variablen angegeben haben, gab es eine Standardspeicherklasse 'auto', die auf alle Variablen angewendet wurde.
Was sind Speicherklassen?
Speicherklassen geben an, wie die Variable oder eine Funktion vom Compiler behandelt werden soll und wie Speicher für eine Variable zugewiesen werden soll. Es definiert die Sichtbarkeit oder den Umfang und die Lebensdauer einer Variablen. Eine Lebensdauer der Variablen gibt an, wie lange die Variable aktiv bleiben wird.
Die Sichtbarkeit oder der Umfang der Variablen hängt davon ab, auf welche Funktionen oder Module die Variable zugreifen kann. Diese Speicherklassen werden vor dem Datentyp der Variablen angegeben.
In C ++ haben wir die folgenden Speicherklassen:
# 1) Automatische Speicherklasse
Dies ist die Standardspeicherklasse. Die Speicherklasse „Auto“ wird auf die lokalen Variablen angewendet und vom Compiler automatisch lokalen Variablen zugewiesen. Lokale Variablen, denen das Schlüsselwort 'auto' vorangestellt ist, bleiben in der Funktion, in der sie deklariert sind, aktiv und verlassen den Gültigkeitsbereich, sobald die Funktion beendet wird.
Wenn die Variablen mit der Speicherklasse 'auto' nicht initialisiert oder mit einem Wert versehen sind, haben sie Müll oder undefinierte Werte.
Sehen wir uns ein Beispiel für automatische Variablen in einem C ++ - Programm an.
#include using namespace std; int main() { int i; float f; cout<<'Variable i = '< Da wir ihnen beim Drucken dieser Variablen keine Werte zugewiesen haben, sehen wir, dass beide Werte = 0 sind. Dies hängt vollständig vom Compiler ab, welche Werte der automatischen lokalen Variablen zugewiesen werden sollen, wenn ihnen noch kein Wert im Programm zugewiesen wurde .
HINWEIS: Ab C ++ 11 wird das Schlüsselwort auto für verwendet Typinferenz . Dies bedeutet, dass wir einen Code wie auto i = 10 verwenden können und der Datentyp von I direkt aus dem für i verwendeten Initialisierer abgeleitet wird. Wenn wir also etwas wie 'auto float f;' deklarieren, zeigt der Compiler einen Fehler an.
Daher verwenden wir normalerweise keine Deklaration für die automatische Speicherklasse, da impliziert wird, dass die Standardeinstellung immer die automatische Speicherklasse ist.
# 2) Speicherklasse registrieren
Wenn wir eine Anforderung haben, dass eine Variable einen schnelleren Zugriff benötigt, verwenden wir die Registerspeicherklasse. Anstatt die Variablen im Arbeitsspeicher (RAM) zu speichern, werden diese Variablen im CPU-Register gespeichert und haben eine Größe, die der eines Registers entspricht.
Da diese Variablen keinen Speicherort haben, können wir den Operator '&' für diese Variablen nicht verwenden.
Eine Variable mit der Speicherklasse Register garantiert nicht, dass die Variable immer im Register gespeichert wird. Stattdessen wird lediglich davon ausgegangen, dass die Variable in einem Register gespeichert sein kann und vollständig von Hardware und Implementierung abhängt.
Registervariablen haben einen ähnlichen Umfang und eine ähnliche Lebensdauer wie die automatischen Variablen.
Zum Beispiel,
#include using namespace std; int main() { int i; register float f; cout<<'Variable i = '< # 3) Externe Speicherklasse Die externe Speicherklasse ist erforderlich, wenn die Variablen für mehrere Dateien freigegeben werden müssen. Externe Variablen haben einen globalen Gültigkeitsbereich und diese Variablen sind außerhalb der Datei sichtbar, in der sie deklariert sind.
Da externe Variablen die außerhalb einer anderen Datei deklarierten und definierten Variablen sind, werden sie nicht initialisiert.
Externe Variablen haben einen globalen Gültigkeitsbereich und die Lebensdauer externer Variablen ist so lang wie das Programm, in dem sie als beendet deklariert sind.
Externe Variablen können wie folgt deklariert werden:
extern int temp; int temp;
Im obigen Beispiel haben wir zwei Variablendeklarationen mit demselben Namen, aber die erste ist die an anderer Stelle definierte externe Variable. Diese externe Variable ist nützlich, wenn wir die Quelldatei einschließen, in der die externe Variablentemperatur in unserem Programm definiert ist.
# 4) Statische Speicherklasse
Die statische Speicherklasse weist den Compiler an, den Wert der Variablen während der gesamten Lebensdauer des Programms beizubehalten. Statische Variablen ähneln den lokalen Variablen, vor ihnen steht jedoch ein statisches Schlüsselwort.
Im Gegensatz zu lokalen Variablen, die nach dem Beenden der Funktion den Gültigkeitsbereich verlassen, verlassen statische Variablen den Gültigkeitsbereich nicht, wenn eine Funktion oder ein Block beendet wird und ihre Werte zwischen Funktionsaufrufen erhalten bleiben.
Statische Variablen werden initialisiert und ihnen wird nur einmal in der Lebensdauer eines Programms Speicher zugewiesen. Statische Variablen werden auf 0 initialisiert, wenn sie nicht bereits während der Deklaration initialisiert wurden.
Sehen wir uns das folgende Beispiel an, um die statische Speicherklasse besser zu verstehen.
#include using namespace std; void printvar() { static int var; var++; cout<<'static variable var = '< Ausgabe:
printvar Aufruf 1: statische Variable var = 1
printvar Aufruf 2: statische Variable var = 2
printvar Aufruf 3: statische Variable var = 3
printvar call 4: statische Variable var = 4
Im obigen Code haben wir eine Funktion 'printvar', in der wir eine statische Variable var vom Typ int deklariert haben. Wir erhöhen dann diese Variable und drucken sie aus. In der Hauptfunktion rufen wir die printvar-Funktion viermal auf.
Überprüfen Sie nun die Ausgabe. Die Ausgabe zeigt, dass bei jedem Funktionsaufruf die statische Variable var gegenüber ihrem vorherigen Wert um 1 erhöht wird. Dies ist die statische Speicherklasse, mit deren Hilfe die Variable ihren Wert zwischen Funktionsaufrufen beibehalten kann. Die statische Variable wird nicht bei jedem Funktionsaufruf neu initialisiert.
Wir sollten auch beachten, dass wir in der Funktion printvar die statische Variable gerade deklariert und nicht initialisiert haben. Es ist bemerkenswert, dass wenn wir die statischen Variablen nicht initialisieren, ihnen der Anfangswert 0 zugewiesen wird.
Hinweis: Die statische Speicherklasse kann auch auf globale Variablen angewendet werden. In diesem Fall hat die Variable einen globalen Gültigkeitsbereich und zusätzlich statischen Speicher.
# 5) Mutable Storage Class
Die veränderbare Speicherklasse wird nur auf die Klassenobjekte angewendet. Durch Anwenden der veränderlichen Speicherklasse kann ein Mitglied eines Objekts die Elementfunktion 'const' überschreiben. Dies bedeutet, dass ein veränderbares Element oder Objekt durch eine Elementfunktion geändert werden kann, die 'const' ist.
In unseren späteren Tutorials erfahren Sie mehr über die const-Funktionen und -Objekte sowie über veränderbare Elemente, wenn wir mehr über die objektorientierte Programmierung in C ++ erfahren.
Fazit
Hier geht es um Typspezifizierer und Speicherklassen in C ++. Wir hoffen, dass wir durch dieses Tutorial alle Konzepte zu Speicherklassen und Typspezifizierern verdeutlichen konnten.
gefälschte E-Mail-Adresse, die ich verwenden kann
In unserem nächsten Tutorial erfahren Sie mehr über die verschiedenen in C ++ verwendeten Operatoren und deren Verwendung.
=> Überprüfen Sie hier die komplette C ++ - Schulungsserie
Literatur-Empfehlungen
- Variablen in C ++
- Python-Variablen
- Java Interface und Abstract Class Tutorial mit Beispielen
- Typkonvertierungen in C ++
- VBScript-Variablen: Deklarieren und Verwenden von Variablen - VBScript Dim
- JMeter-Variablen und -Funktionen
- 10 BESTEN kostenlosen Cloud-Speicheranbieter (Online-Speicher 2021)
- Arten von Migrationstests: Mit Testszenarien für jeden Typ