Utilizzando un array globale in C ++

Utilizzando un array globale in C ++

Una semplice dichiarazione di array breve che include la sua definizione può essere dichiarata in qualsiasi ambito in C ++ come segue:

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

Questa è una serie di personaggi il cui nome è CH. Il letterale dell'array è un esempio di inizializer_list.

Questo stesso array può essere dichiarato e inizializzato come segue, nell'ambito di funzione o un ambito locale nidificato ma non nell'ambito globale:

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

Se questo segmento di codice viene digitato nell'ambito globale, il compilatore emetterà cinque messaggi di errore per le cinque righe di assegnazione. Tuttavia, l'array può essere dichiarato senza inizializzazione nell'ambito globale e quindi assegnato valori nell'ambito della funzione (o altri ambiti), come mostra il seguente programma:

#includere
Utilizzo dello spazio dei nomi std;
char ch [5];
int main ()

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

L'ambito globale ha la dichiarazione "Char Ch [5];". L'assegnazione dei valori è stata eseguita nella funzione C ++ main (). La funzione principale C ++ è ancora una funzione.

Queste sono le regole su come utilizzare un array nell'ambito globale, nell'ambito della funzione e nell'ambito locale nidificato (o qualsiasi altro ambito):

1. Un array può essere dichiarato con l'inizializzazione di valori pratici in una dichiarazione in qualsiasi ambito (globale, funzione, ambito locale nidificato).

2. Un array può essere dichiarato senza inizializzazione di valori pratici nell'ambito globale e quindi ha assegnato valori pratici nell'ambito della funzione o nell'ambito locale nidificato.

3. Un array può essere dichiarato senza l'inizializzazione di valori pratici nell'ambito di funzione o nell'ambito locale nidificato e ha assegnato valori pratici nello stesso ambito locale.

Queste regole si applicano anche ai tipi scalari (fondamentali). Il resto di questo articolo inizia illustrando la dichiarazione e l'assegnazione di valori pratici dei tipi fondamentali negli ambiti globali e altri (funzione e locale). Questo è seguito dall'illustrazione della dichiarazione e dell'assegnazione dei valori pratici del tipo di array nel globale e negli altri ambiti (funzione e locale). L'intero (int) viene utilizzato come esempio per i tipi fondamentali. Le tre regole sopra sono dimostrate per l'intero e l'array.

Dichiarazione del tipo intero con ambiti globali e altri

In questa sezione, le regole sono dimostrate con il tipo intero.

Prima regola:

Un intero può essere dichiarato con l'inizializzazione di un valore pratico in una dichiarazione in qualsiasi ambito (funzione globale, funzione nidificata). Il seguente programma lo illustra con tre diverse variabili interi:

#includere
Utilizzo dello spazio dei nomi std;
int int1 = 1;
int main ()

cout<< int1 <int int2 = 2;
cout<< int2 <if (1 == 1)
int int3 = 3;
cout<< int3 <
restituzione 0;

L'output è:

1
2
3

L'ambito locale nidificato (blocco) è quello che inizia con la condizione if.

Seconda regola:

Un intero può essere dichiarato senza inizializzazione di un valore pratico nell'ambito globale e quindi ha assegnato un valore pratico nell'ambito della funzione o nell'ambito locale nidificato. Il seguente programma lo illustra con una variabile intera:

#includere
Utilizzo dello spazio dei nomi std;
int inter;
int main ()

cout<< inter <inter = 20;
cout<< inter <if (1 == 1)
inter = 30;
cout<< inter <
restituzione 0;

L'output è:

0
20
30

Quando un intero viene dichiarato senza assegnazione, l'intero prende il valore predefinito di zero. In questo caso, lo zero non è un valore pratico.

Terza regola:

Un intero può essere dichiarato senza l'inizializzazione di un valore pratico nell'ambito della funzione o nell'ambito locale nidificato e ha assegnato valori pratici nello stesso ambito locale. Il seguente programma lo illustra con due diverse variabili interi:

#includere
Utilizzo dello spazio dei nomi std;
int main ()

int int2;
int2 = 2;
cout<< int2 <if (1 == 1)
int int3;
int3 = 3;
cout<< int3 <
restituzione 0;

L'output è:

2
3

Il seguente programma non si compilerà e il compilatore emetterà un messaggio di errore:

#includere
Utilizzo dello spazio dei nomi std;
int inter;
inter = 5;
int main ()

cout<< inter <restituzione 0;

Il problema è il segmento del codice dell'ambito globale:

int inter;
inter = 5;

La seconda affermazione non è consentita in questo contesto.

Dichiarazione del tipo di array con ambiti globali e altri

Prima regola:

Un array può essere dichiarato con l'inizializzazione di valori pratici in una dichiarazione in qualsiasi ambito (globale, funzione, ambito locale nidificato). Il seguente programma lo illustra con tre diversi array:

#includere
Utilizzo dello spazio dei nomi 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 <
restituzione 0;

L'output dovrebbe essere:

Abcde
Fghij
Klmno

L'ambito locale nidificato (blocco) è quello che inizia con la condizione if.

Seconda regola:

Un array può essere dichiarato senza inizializzazione di valori pratici nell'ambito globale e quindi ha assegnato valori pratici nell'ambito della funzione o ambito locale nidificato (o qualsiasi altro ambito). Il seguente programma lo illustra con un array:

#includere
Utilizzo dello spazio dei nomi 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<
restituzione 0;

L'output dovrebbe essere:

"" "" "
Fghij
Klmno

Quando un personaggio viene dichiarato senza incarico, il carattere prende il valore predefinito di "(nessun carattere). In questo caso, il "non è un valore pratico. Ce ne sono cinque "per il caso globale.

Nota: l'assegnazione può essere eseguita solo in questo modo senza inizializer_list.

Nota: con array, quando l'array viene dichiarato senza inizializzazione dei valori pratici in una funzione o ambito nidificato, i valori predefiniti possono essere arbitrari. I valori predefiniti sono solo ", per il caso globale. Questa funzione arbitraria si applica anche all'array intero.

Terza regola:

Un array può essere dichiarato senza l'inizializzazione di valori pratici nell'ambito di funzione o nell'ambito locale nidificato e ha assegnato valori pratici nello stesso ambito locale. Il seguente programma lo illustra con due diversi array:

#includere
Utilizzo dello spazio dei nomi 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 <
restituzione 0;

L'output dovrebbe essere:

Fghij
Klmno

Il seguente programma non si compilerà e il compilatore emetterà alcuni messaggi di errore:

#includere
Utilizzo dello spazio dei nomi std;
char ch1 [5];
ch1 [0] = 'a';
CH1 [1] = 'B';
CH1 [2] = 'C';
ch1 [3] = 'd';
CH1 [4] = 'E';
int main ()

cout<< ch1 <restituzione 0;

Il problema è il segmento del codice dell'ambito globale:

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

Le dichiarazioni di assegnazione non sono consentite in questo contesto.

Conclusione

Queste sono le regole su come utilizzare un array nell'ambito globale, nell'ambito della funzione e nell'ambito locale nidificato (o qualsiasi altro ambito):

1) Un array può essere dichiarato con l'inizializzazione di valori pratici in una dichiarazione, in qualsiasi ambito (globale, funzione, ambito locale nidificato).

2) Un array può essere dichiarato senza inizializzazione di valori pratici, nell'ambito globale, e quindi ha assegnato valori pratici, nell'ambito delle funzioni o nell'ambito locale nidificato (o qualsiasi altro ambito).

3) Un array può essere dichiarato senza l'inizializzazione di valori pratici, nell'ambito della funzione o nell'ambito locale nidificato, e ha assegnato valori pratici, nello stesso ambito locale.