Bruke en global matrise i C ++

Bruke en global matrise i C ++

En enkel kortvarig erklæring som inkluderer definisjonen kan erklæres i ethvert omfang i C ++ som følger:

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

Dette er en rekke tegn hvis navn er CH. Array Literal er et eksempel på en initializer_list.

Den samme matrisen kan deklareres og initialiseres som følger, i et funksjonsomfang eller et nestet lokalt omfang, men ikke i det globale omfanget:

char ch [5];
ch [0] = 'a';
CH [1] = 'B';
CH [2] = 'C';
CH [3] = 'D';
CH [4] = 'E';

Hvis dette kodesegmentet er skrevet i det globale omfanget, vil kompilatoren utstede fem feilmeldinger for de fem tildelingslinjene. Imidlertid kan matrisen deklareres uten initialisering i det globale omfanget og deretter tilordne verdier i funksjonsomfanget (eller andre omfang), som følgende program viser:

#inkludere
ved hjelp av navneområdet STD;
char ch [5];
int main ()

ch [0] = 'a';
CH [1] = 'B';
CH [2] = 'C';
CH [3] = 'D';
CH [4] = 'E';
retur 0;

Det globale omfanget har erklæringen “Char ch [5];”. Tildelingen av verdiene er gjort i C ++ Main () -funksjonen. C ++ hovedfunksjonen er fremdeles en funksjon.

Dette er reglene for hvordan du bruker en matrise i det globale omfanget, funksjonsomfanget og nestet lokalt omfang (eller et hvilket som helst annet omfang):

1. En matrise kan deklareres med initialisering av praktiske verdier i en uttalelse i ethvert omfang (global, funksjon, nestet lokalt omfang).

2. En rekke.

3. En rekke.

Disse reglene gjelder også for skalar (grunnleggende) typer. Resten av denne artikkelen begynner med å illustrere erklæringen og tildelingen av praktiske verdier av grunnleggende typer i det globale og de andre omfanget (funksjon og lokalt). Dette blir fulgt av illustrasjonen av erklæringen og tildelingen av praktiske verdier av matrisetypen i Global and the Other Scopes (Function and Local). Heltallet (int) brukes som eksempel for de grunnleggende typene. Ovennevnte tre regler er demonstrert for heltallet og matrisen.

Heltallstype erklæring med globale og andre omfang

I dette avsnittet demonstreres reglene med heltallstypen.

Første regel:

Et heltall kan erklæres med initialisering av en praktisk verdi i en uttalelse i ethvert omfang (global, funksjon, nestet lokalt omfang). Følgende program illustrerer dette med tre forskjellige heltallvariabler:

#inkludere
ved hjelp av navneområdet STD;
int int1 = 1;
int main ()

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

Utgangen er:

1
2
3

Det nestede lokale omfanget (blokken) er den som begynner med IF-kondisjonen.

Andre regel:

Et heltall kan deklareres uten initialisering av en praktisk verdi i det globale omfanget og har deretter tildelt en praktisk verdi i funksjonsomfang eller nestet lokalt omfang. Følgende program illustrerer dette med en heltallvariabel:

#inkludere
ved hjelp av navneområdet STD;
int inter;
int main ()

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

Utgangen er:

0
20
30

Når et heltall blir erklært uten tildeling, tar heltallet standardverdien på null. I dette tilfellet er null ikke en praktisk verdi.

Tredje regel:

Et heltall kan erklæres uten initialisering av en praktisk verdi i funksjonsomfang eller nestet lokalt omfang og har tildelt praktiske verdier i det samme lokale omfanget. Følgende program illustrerer dette med to forskjellige heltallvariabler:

#inkludere
ved hjelp av navneområdet STD;
int main ()

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

Utgangen er:

2
3

Følgende program vil ikke kompilere, og kompilatoren vil utstede en feilmelding:

#inkludere
ved hjelp av navneområdet STD;
int inter;
inter = 5;
int main ()

cout<< inter <retur 0;

Problemet er det globale omfangskodesegmentet:

int inter;
inter = 5;

Den andre uttalelsen er ikke tillatt i denne sammenhengen.

Array Type -erklæring med globale og andre omfang

Første regel:

En matrise kan deklareres med initialisering av praktiske verdier i en uttalelse i ethvert omfang (global, funksjon, nestet lokalt omfang). Følgende program illustrerer dette med tre forskjellige matriser:

#inkludere
ved hjelp av navneområdet 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 <
retur 0;

Utgangen skal være:

Abcde
Fghij
Klmno

Det nestede lokale omfanget (blokken) er den som begynner med IF-kondisjonen.

Andre regel:

En matrise kan deklareres uten initialisering av praktiske verdier i det globale omfanget og deretter ha tildelt praktiske verdier i funksjonsomfang eller nestet lokalt omfang (eller noe annet omfang). Følgende program illustrerer dette med en matrise:

#inkludere
ved hjelp av navneområdet 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<
retur 0;

Utgangen skal være:

"" ""
Fghij
Klmno

Når et tegn blir erklært uten tildeling, tar tegnet standardverdien på "(ingen karakter). I dette tilfellet er "ikke en praktisk verdi. Det er fem "for den globale saken.

Merk: Oppgaven kan bare gjøres på denne måten uten initializer_list.

Merk: Med matriser, når matrisen er deklarert uten initialisering av praktiske verdier i en funksjon eller nestet omfang, kan standardverdiene være vilkårlige. Standardverdiene er bare ", for den globale saken. Denne vilkårlige funksjonen gjelder også for heltallsarray.

Tredje regel:

En rekke. Følgende program illustrerer dette med to forskjellige matriser:

#inkludere
ved hjelp av navneområdet 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 <
retur 0;

Utgangen skal være:

Fghij
Klmno

Følgende program vil ikke kompilere, og kompilatoren vil utstede noen feilmeldinger:

#inkludere
ved hjelp av navneområdet STD;
Char CH1 [5];
CH1 [0] = 'A';
CH1 [1] = 'B';
CH1 [2] = 'C';
CH1 [3] = 'D';
CH1 [4] = 'E';
int main ()

cout<< ch1 <retur 0;

Problemet er det globale omfangskodesegmentet:

Char CH1 [5];
CH1 [0] = 'A';
CH1 [1] = 'B';
CH1 [2] = 'C';
CH1 [3] = 'D';
CH1 [4] = 'E';

Oppdragsuttalelsene er ikke tillatt i denne sammenhengen.

Konklusjon

Dette er reglene for hvordan du bruker en matrise i det globale omfanget, funksjonsomfanget og nestet lokalt omfang (eller et hvilket som helst annet omfang):

1) En matrise kan deklareres med initialisering av praktiske verdier i en uttalelse, i ethvert omfang (global, funksjon, nestet lokalt omfang).

2) En matrise kan deklareres uten initialisering av praktiske verdier, i det globale omfanget, og har deretter tildelt praktiske verdier, i funksjonsomfang eller nestet lokalt omfang (eller noe annet omfang).

3) En rekke.