Verwenden eines globalen Arrays in C ++

Verwenden eines globalen Arrays in C ++

Eine einfache Kurzarray -Erklärung, die seine Definition enthält, kann in C ++ in jedem Bereich wie folgt deklariert werden:

char ch [] = 'a', 'b', 'c', 'd', 'e';

Dies ist eine Reihe von Zeichen, deren Name CH ist. Das Array Literal ist ein Beispiel für eine Initializer_List.

Das gleiche Array kann in einem Funktionsbereich oder einem verschachtelten lokalen Bereich, aber nicht im globalen Bereich initialisiert und initialisiert werden:

Char ch [5];
ch [0] = 'a';
ch [1] = 'b';
ch [2] = 'c';
ch [3] = 'd';
ch [4] = 'e';

Wenn dieses Codesegment im globalen Bereich eingegeben wird, gibt der Compiler fünf Fehlermeldungen für die fünf Zuordnungszeilen aus. Das Array kann jedoch im globalen Bereich ohne Initialisierung deklariert werden und dann Werte im Funktionsbereich (oder in anderen Teilen) zugewiesen, wie das folgende Programm zeigt:

#enthalten
Verwenden von Namespace STD;
Char ch [5];
int main ()

ch [0] = 'a';
ch [1] = 'b';
ch [2] = 'c';
ch [3] = 'd';
ch [4] = 'e';
Rückkehr 0;

Der globale Bereich hat die Erklärung "Char ch [5]";. Die Zuordnung der Werte wurde in der Funktion c ++ main () erfolgen. Die C ++ - Hauptfunktion ist immer noch eine Funktion.

Dies sind die Regeln für die Verwendung eines Arrays im globalen Bereich, im Funktionsbereich und im verschachtelten lokalen Bereich (oder in einem anderen Bereich):

1. Ein Array kann mit der Initialisierung praktischer Werte in einer Aussage in jedem Bereich (globale, Funktion, verschachtelte lokale Umfang) deklariert werden.

2. Ein Array kann ohne Initialisierung praktischer Werte im globalen Bereich deklariert werden und haben dann praktische Werte im Funktionsumfang oder im verschachtelten lokalen Bereich zugewiesen.

3. Ein Array kann ohne Initialisierung praktischer Werte im Funktionsbereich oder verschachtelten lokalen Bereich deklariert werden und hat praktische Werte in demselben lokalen Bereich zugewiesen.

Diese Regeln gelten auch für skalare (grundlegende) Typen. Der Rest dieses Artikels beginnt mit der Veranschaulichung der Erklärung und Zuordnung praktischer Werte grundlegender Typen im globalen und anderen Bereiche (Funktion und lokal). Darauf folgt die Abbildung der Erklärung und Zuordnung praktischer Werte des Array -Typs im globalen und anderen Bereiche (Funktion und lokal). Die Ganzzahl (int) wird als Beispiel für die grundlegenden Typen verwendet. Die obigen drei Regeln werden für die Ganzzahl und das Array demonstriert.

Ganzzahltypdeklaration mit globalen und anderen Gebieten

In diesem Abschnitt werden die Regeln mit dem Ganzzahltyp demonstriert.

Erste Regel:

Eine Ganzzahl kann mit Initialisierung eines praktischen Wertes in einer Erklärung in jedem Umfang (globale, Funktion, verschachtelte lokale Umfang) deklariert werden. Das folgende Programm zeigt dies mit drei verschiedenen Ganzzahlvariablen:

#enthalten
Verwenden von Namespace STD;
int int1 = 1;
int main ()

Cout<< int1 <int int2 = 2;
Cout<< int2 <if (1 == 1)
int int3 = 3;
Cout<< int3 <
Rückkehr 0;

Die Ausgabe ist:

1
2
3

Der verschachtelte lokale Bereich (Block) ist derjenige, der mit der If-Kondition beginnt.

Zweite Regel:

Eine Ganzzahl kann ohne Initialisierung eines praktischen Wertes im globalen Bereich deklariert werden und haben dann einen praktischen Wert im Funktionsumfang oder im verschachtelten lokalen Bereich zugewiesen. Das folgende Programm zeigt dies mit einer Ganzzahlvariablen:

#enthalten
Verwenden von Namespace STD;
int inter;
int main ()

Cout<< inter <inter = 20;
Cout<< inter <if (1 == 1)
Inter = 30;
Cout<< inter <
Rückkehr 0;

Die Ausgabe ist:

0
20
30

Wenn eine Ganzzahl ohne Zuweisung deklariert wird, nimmt die Ganzzahl den Standardwert von Null. In diesem Fall ist die Null kein praktischer Wert.

Dritte Regel:

Eine Ganzzahl kann ohne Initialisierung eines praktischen Wertes im Funktionsbereich oder des verschachtelten lokalen Bereichs deklariert werden und hat praktische Werte in demselben lokalen Bereich zugewiesen. Das folgende Programm zeigt dies mit zwei verschiedenen Ganzzahlvariablen:

#enthalten
Verwenden von Namespace STD;
int main ()

int int2;
int2 = 2;
Cout<< int2 <if (1 == 1)
int int3;
int3 = 3;
Cout<< int3 <
Rückkehr 0;

Die Ausgabe ist:

2
3

Das folgende Programm wird nicht kompiliert, und der Compiler gibt eine Fehlermeldung aus:

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

Cout<< inter <Rückkehr 0;

Das Problem ist das Global Scope Code -Segment:

int inter;
inter = 5;

Die zweite Aussage ist in diesem Zusammenhang nicht zulässig.

Array -Typdeklaration mit globalen und anderen Gebieten

Erste Regel:

Ein Array kann mit der Initialisierung praktischer Werte in einer Aussage in jedem Bereich (globale, Funktion, verschachtelte lokale Umfang) deklariert werden. Das folgende Programm zeigt dies mit drei verschiedenen Arrays:

#enthalten
Verwenden von Namespace STD;
char ch1 [] = 'a', 'b', 'c', 'd', 'e';
int main ()

Cout<< ch1 <char ch2 [] = 'f', 'g', 'h', 'i', 'j';
Cout<< ch2 <if (1 == 1)
char ch3 [] = 'k', 'l', 'm', 'n', 'o';
Cout<< ch3 <
Rückkehr 0;

Die Ausgabe sollte sein:

Abcde
Fghij
Klmno

Der verschachtelte lokale Bereich (Block) ist derjenige, der mit der If-Kondition beginnt.

Zweite Regel:

Ein Array kann ohne Initialisierung der praktischen Werte im globalen Bereich deklariert werden und haben dann praktische Werte im Funktionsbereich oder verschachtelten lokalen Bereich (oder einen anderen Bereich) zugewiesen. Das folgende Programm zeigt dies mit einem Array:

#enthalten
Verwenden von Namespace STD;
Char ch [5];
int main ()

Cout<ch [0] = 'f';
ch [1] = 'g';
ch [2] = 'H';
ch [3] = 'i';
ch [4] = 'j';
Cout<if (1 == 1)
ch [0] = 'k';
ch [1] = 'l';
ch [2] = 'm';
ch [3] = 'n';
ch [4] = 'o';
Cout<
Rückkehr 0;

Die Ausgabe sollte sein:

"" "" "
Fghij
Klmno

Wenn ein Zeichen ohne Zuweisung deklariert wird, nimmt das Zeichen den Standardwert von "(kein Zeichen). In diesem Fall ist das "kein praktischer Wert. Es gibt fünf "für den globalen Fall.

Hinweis: Die Zuweisung kann nur ohne die Initializer_List erfolgen.

Hinweis: Wenn das Array bei Arrays ohne Initialisierung praktischer Werte in einer Funktion oder einem verschachtelten Bereich deklariert wird, können die Standardwerte willkürlich sein. Die Standardwerte sind nur "für den globalen Fall. Diese willkürliche Funktion gilt auch für Ganzzahlarray.

Dritte Regel:

Ein Array kann ohne Initialisierung praktischer Werte im Funktionsbereich oder verschachtelten lokalen Bereich deklariert werden und hat praktische Werte in demselben lokalen Bereich zugewiesen. Das folgende Programm zeigt dies mit zwei verschiedenen Arrays:

#enthalten
Verwenden von Namespace STD;
int main ()

char ch2 [5];
CH2 [0] = 'f';
CH2 [1] = 'g';
CH2 [2] = 'H';
CH2 [3] = 'I';
CH2 [4] = 'J';
Cout<< ch2 <if (1 == 1)
char ch3 [5];
CH3 [0] = 'K';
CH3 [1] = 'L';
CH3 [2] = 'M';
CH3 [3] = 'n';
CH3 [4] = 'O';
Cout<< ch3 <
Rückkehr 0;

Die Ausgabe sollte sein:

Fghij
Klmno

Das folgende Programm wird nicht kompiliert, und der Compiler gibt einige Fehlermeldungen aus:

#enthalten
Verwenden von Namespace STD;
char ch1 [5];
CH1 [0] = 'a';
CH1 [1] = 'B';
CH1 [2] = 'C';
CH1 [3] = 'D';
CH1 [4] = 'e';
int main ()

Cout<< ch1 <Rückkehr 0;

Das Problem ist das Global Scope Code -Segment:

char ch1 [5];
CH1 [0] = 'a';
CH1 [1] = 'B';
CH1 [2] = 'C';
CH1 [3] = 'D';
CH1 [4] = 'e';

Die Zuweisungsanweisungen sind in diesem Zusammenhang nicht zulässig.

Abschluss

Dies sind die Regeln für die Verwendung eines Arrays im globalen Bereich, im Funktionsbereich und im verschachtelten lokalen Bereich (oder in einem anderen Bereich):

1) Ein Array kann mit der Initialisierung praktischer Werte in einer Erklärung in jedem Bereich (globale, Funktion, verschachtelte lokale Umfang) deklariert werden.

2) Ein Array kann ohne Initialisierung praktischer Werte im globalen Bereich deklariert werden und dann praktische Werte im Funktionsbereich oder verschachtelten lokalen Bereich (oder einen anderen Umfang) zugewiesen werden.

3) Ein Array kann ohne Initialisierung praktischer Werte im Funktionsbereich oder verschachtelten lokalen Bereiche deklariert werden und haben praktische Werte in demselben lokalen Bereich zugewiesen.