C ++ globale Variablen

C ++ globale Variablen
Ein Speicherort muss identifiziert werden und er wird durch einen Namen identifiziert, der als Variable bezeichnet wird. Die Länge eines Programms von oben nach unten hat unterschiedliche Portionen, die unterschiedliche Dinge tun. Einige Portionen sind verwandt, aber diskontinuierlich nach Länge. Die Intervalle nach der Länge der diskontinuierlichen Teile haben andere Teile, die mit anderen Teilen zusammenhängen.

Ein Umfang ist eine Reihe verwandter Teile, in denen eine Variable verwendet oder gesehen werden kann. Scopes haben Namen. Eine globale Variable ist eine Variable, die in jedem Bereich eines Programms zu sehen ist. Eine globale Variable kann unterschiedliche Typen sein. In diesem Artikel wird erläutert, wie eine globale Variable in gemeinsamen Teilen gesehen werden kann.

Artikelinhalt

  • Verwandte Teile
  • Globaler Umfang und globale Variable
  • Blockumfang und globale Variable
  • Normaler Funktionsumfang und globale Variablen
  • Klassenumfang und globale Variable
  • Abschluss

Verwandte Teile

Betrachten Sie das folgende Programm:

#enthalten
Verwenden von Namespace STD;
int it = 5;
float ft = 2.7;
int fn1 (int integ = es)

/ * Aussagen */
integen zurückkehren;

float fn2 (float flt = ft)

/ * Aussagen */
Rückkehr FLT;

int main ()

Cout << fn1() << endl;
Cout << fn2() << endl;
Rückkehr 0;

Die Ausgabe ist:

5
2.7

Die Variablen „IT“ und FT sind unterschiedliche Typen. In Anbetracht der Variablen "It" zuerst: "It" ist in seiner Erklärunglinie zu sehen. Einige Zeilen werden übersprungen. Es wird dann in der Signatur von FN1 () gesehen. Es wird auch im gesamten Körper von FN1 gesehen (). Einige Zeilen und ein Teil werden übersprungen. Es ist dann im gesamten Körper der Main () -Funktion zu sehen. Tatsächlich wird in der ersten Anweisung der Funktion main () durch den Funktionsaufruf fn1 () indirekt gesehen. Die Teile für die Variable „It“ wurden gerade dargestellt.

In Anbetracht der variablen ft jetzt: ft ist in seiner Erklärunglinie zu sehen. Einige Zeilen und eine Portion (FN1 -Definition) werden übersprungen. Eine leere Linie wird übersprungen. Es wird dann in der Signatur von FN2 () gesehen. Es ist im gesamten Körper von FN2 zu sehen (). Es ist dann im gesamten Körper der Main () -Funktion zu sehen. Tatsächlich ist es indirekt in der zweiten Anweisung der Funktion main () durch den Funktionsaufruf von FN2 () zu sehen. Die Teile für die Variable 'ft' wurden gerade dargestellt.

Globaler Umfang und globale Variable

Wenn ein Programmierer gerade mit dem Eingeben einer Datei beginnt, ist dies der globale Bereich. Betrachten Sie das folgende Programm:

#enthalten
Verwenden von Namespace STD;
char var = 'e';
int main ()

Cout <Cout <<::var<<'\n';
Rückkehr 0;

Die Ausgabe ist:

E
E

In diesem Programm beginnt der Teil oder der Umfang für VAR vom Punkt der VAR -Deklaration und dauert bis zum Ende der Übersetzungseinheit (Datei) nach unten nach unten (Datei).

Der Körper der Main () -Funktion ist ein anderer Rechtsbereich für sich; Der globale Bereich nistet den Main () -Funktionsumfang.

Die variable var ist eine globale Umfangsvariable, da sie in der Datei überall zu sehen ist. Es ist im Main () -Funktionsbereich zu sehen. Im vorherigen Programm sind „IT“ und FT globale Umfangsvariablen. Jeder war in seiner Deklarationslinie, in einem Funktionsbereich und im Funktionsbereich der Main () zu sehen.

Um auf eine globale Variable (Variable des globalen Umfangs) aus einem anderen Bereich zuzugreifen.

Erklären des Code: Alle Programme in C ++ sollten mit mindestens den ersten beiden Zeilen beginnen, mit denen dieses Programm beginnt. Die Linien sind:

#enthalten
Verwenden von Namespace STD;

Die erste Zeile hier ist keine Aussage; Es ist eine Richtlinie, eine Einschlussrichtlinie. Es enthält die Eingangs-/Ausgabestreambibliothek, die für das Senden der Ausgabe an das Terminal verantwortlich ist und die Eingabe von der Tastatur empfängt. Das Terminal und die Tastatur zusammen werden als Konsole bezeichnet. Diese Bibliothek heißt die iOstream -Bibliothek (i.e., Die Eingangs-/Ausgabestreambibliothek).

Die zweite Zeile im Programm ist keine Richtlinie. Es ist eine Aussage und endet mit einem Semikolon. Es heißt, dass der unten verwendete Name aus dem Standard -Namespace stammt, sofern nicht anders angegeben. Es könnte den Leser interessieren, zu wissen, dass der Namespace einen Zielfernrohr hat; Dies wird jedoch in diesem Artikel nicht behandelt.

Die nächste Aussage unter den ersten beiden Zeilen ist eine charable variable vollständige Deklaration. In der Funktion main () drucken die ersten beiden Zeilen den Wert derselben Variablen zum Terminal auf leicht unterschiedliche Weise.

Blockumfang und globale Variable

Beispiele für zusammengesetzte Aussagen sind die IF, während Anweisungen für, für oder wechseln. Jede dieser zusammengesetzten Aussagen kann einen Block haben. Eine Block -Scope -Variable ist eine in einem Block definierte Variable. Sein Zielfernrohr beginnt an seiner Erklärung und endet am Ende seines Blocks. Eine globale Variable wird normalerweise außerhalb und über diesem Block definiert. Eine globale Variable ist außerhalb dieses Blocks, in der Header -Linie dieses Blocks und innerhalb des Blocks zu sehen. Das folgende Programm zeigt dies mit einem If-Block:

#enthalten
Verwenden von Namespace STD;
int i = 5;
int main ()

Cout << "First i is: " << i << endl;
if (i == 5)
Cout << "Second i is same: " << i << endl;

Rückkehr 0;

Die Ausgabe ist:

Zuerst ist ich: 5
Zweitens ist ich gleich: 5

Der If-Block ist ein verschachtelter Block zum Main () -Funktionsbereich, der ein verschachtelter Block für den globalen Bereich ist. Dieses Programm zeigt, dass globale Variablen in verschachtelten Blöcken gesehen werden können.

Überschrieben im verschachtelten Block

Eine globale Variable kann in einem verschachtelten Block überschrieben werden. Das heißt, eine globale Variable kann durch eine gleichnamige Variable in einem verschachtelten Block ersetzt werden. Im folgenden Programm werde ich durch eine andere Einheit, einen Float, in einem verschachtelten Block ersetzt. Und dies ist die Regel: Eine Variable in einem verschachtelten Bereich mit demselben Namen wie eine außerhalb des Bereichs überschreibt diese äußere Variable. Für den verschachtelten Bereich kann die Variable, die außerhalb des verschachtelten Bereichs mit demselben Namen erklärt wurde, innerhalb des verschachtelten Bereichs nicht zu sehen sein. Weil der in dem verschachtelten Bereich seinen Platz im verschachtelten Bereich eingenommen hat. Der eine innerhalb des verschachtelten Bereichs ist von seiner Erklärung bis zum Ende seines Blocks zu sehen. Derjenige im verschachtelten Bereich benötigt keine Beziehung zu dem außerhalb des verschachtelten Bereichs. Das Programm ist:

#enthalten
Verwenden von Namespace STD;
int i = 5;
int main ()

Cout << "First i is: " << i << endl;
if (i == 5)
float i = 7.0;
Cout << "Second i is different: " << i << endl;

Rückkehr 0;

Die Ausgabe ist:

Zuerst ist ich: 5
Zweitens ist ich anders: 7

Die überschriebene Variable ist gleichermaßen und kann immer noch vom gleichen Typ sein.

Normaler Funktionsumfang und globale Variable

Betrachten Sie das folgende Programm:

#enthalten
Verwenden von Namespace STD;
int fn (int integ);
int i = 5;
int fn (int ing = i)

/ * Aussagen */
integen zurückkehren;

int main ()

Cout << fn() << endl;
Rückkehr 0;

Der Ausgang ist 5. Die deklarative Region der Funktion fn () besteht aus der Linie "int fn (int ing)"; seines Prototyps, der Teil seiner Definition im globalen Bereich und die aufrufende Erklärung in der Hauptfunktionskörper. Alle diese Linien und Teile bilden den Umfang der Funktion fn (). Die Funktionssignatur von FN () ist Teil des Funktionsbereichs (sowie des Körpers). Nun, die globale Variable, wurde ich in allen Linien oder Teilen der FN -Funktion gesehen.

Betrachten Sie das folgende Programm mit Klassen und sofortigen Objekten:

#enthalten
Verwenden von Namespace STD;
int i = 5;
Klasse Calc
Privatgelände:
int pm = i;
öffentlich:
void mfn (int inte = i)

Cout << inte << endl;

;
Klasse DCLA: Öffentliche Berechnung

öffentlich:
int dm = i;
;
int main ()

Calc obj;
obj.mfn ();
DCLA Dobj;
Cout << dObj.dM << endl;
Rückkehr 0;

Die Ausgabe ist:

5
5

Das Programm verfügt über eine Basisklasse, CALC und seine abgeleitete Klasse DCLA. Die Basisklasse ist öffentlich in der abgeleiteten Klasse: Dies bedeutet, dass die abgeleitete Klasse die geschützten Mitglieder der Basisklasse sehen kann. Die Teile für die Klasse, Calc, sind also sein Block und der Block der abgeleiteten Klasse, DCLA. Das heißt, es gibt zwei Teile für den Umfang der Klasse, Calc. Nun, die globale Variable, ich bin in diesen beiden Portionen gesehen.

Abschluss

Ein Speicherort muss identifiziert werden und er wird durch einen Namen identifiziert, der als Variable bezeichnet wird. Die Länge eines Programms von oben nach unten hat unterschiedliche Portionen, die unterschiedliche Dinge tun. Einige Portionen sind verwandt, aber diskontinuierlich nach Länge. Die Intervalle nach der Länge der diskontinuierlichen Teile haben andere Teile, die mit anderen Teilen zusammenhängen.

Ein Umfang ist eine Reihe verwandter Teile, in denen eine Variable verwendet oder gesehen werden kann. Scopes haben Namen. Eine globale Variable ist eine Variable, die in jedem Umfang des Programms zu sehen ist. Eine globale Variable kann von jedem Typ sein.