Arrays i C ++ - Erklære - Initialiser - Markør til matrixeksempler

Indholdsfortegnelse:

Anonim

Hvad er en matrix?

Et array er en datastruktur, der sekventielt lagrer et element af samme datatype. Et C ++ -array har en fast størrelse.

Du kan se en matrix som en samling af variabler af en lignende datatype. I stedet for at erklære hver variabel og tildele den en værdi individuelt, kan du erklære en variabel (arrayet) og tilføje værdierne for de forskellige variabler til den. Hver værdi, der tilføjes til arrayet, identificeres med et indeks.

I denne C ++ tutorial lærer du:

  • Hvad er en matrix?
  • Hvorfor har vi brug for arrays?
  • Erklær en matrix i C ++
  • Initialisering af matrix
  • Typer af arrays
    • En-dimensionel matrix
    • Multidimensionel matrix
    • To-dimensionel matrix
    • Tre-dimensionel matrix
    • Markør til en matrix
  • Adgang til værdierne i en matrix
  • Fordele ved en matrix i C ++
  • Ulemper ved en matrix i C ++

Hvorfor har vi brug for arrays?

Arrays er meget vigtige på ethvert programmeringssprog. De giver en mere bekvem måde at lagre variabler eller en samling af data af en lignende datatype sammen i stedet for at gemme dem separat. Der åbnes adgang til hver værdi i arrayet separat.

Erklær en matrix i C ++

Array-erklæring i C ++ involverer angivelse af typen såvel som antallet af elementer, der skal lagres af arrayet. Syntaks:

type array-Name [ array-Size ];

Regler for erklæring af et enkeltdimensionelt array i C ++.

  • Type: Typen er typen af ​​elementer, der skal gemmes i arrayet, og den skal være en gyldig C ++ - datatype.
  • Array-Name: Array-Name er det navn, der skal tildeles arrayet.
  • Array-Size: Array-Size er antallet af elementer, der skal gemmes i arrayet. Det skal være et heltal og større end 0.

For eksempel kan du oprette en matrix med navnet age og gemme alderen på 5 studerende som følger:

int age[5];

Arrayalderen gemmer 5 heltal, der repræsenterer forskellige studerendes alder.

Initialisering af matrix

Arrayinitialisering er processen med at tildele / lagre elementer til en matrix. Initialiseringen kan udføres i en enkelt erklæring eller en efter en. Bemærk, at det første element i en matrix er gemt ved indeks 0, mens det sidste element er gemt ved indeks n-1, hvor n er det samlede antal elementer i matrixen.

I aldersgruppen gemmes det første element i indeks 0, mens det sidste element lagres i indeks 4.

Lad os bruge aldersgruppen til at demonstrere, hvordan matrixinitialisering kan udføres:

int age[5] = {19, 18, 21, 20, 17};

Det samlede antal elementer i {} kan ikke overstige den værdi, der er angivet i []. Elementet 19 er ved indeks 0, 18 ved indeks 1, 21 ved indeks 2, 20 ved indeks 3 og 17 ved indeks 4. Hvis du ikke angiver antallet af elementer, der skal lagres i arrayet inden for [], skal arrayet vil kun være stor nok til at holde elementerne tilføjet inden for {}. For eksempel:

int age[] = {19, 18, 21, 20, 17};

Ovenstående erklæring opretter nøjagtigt den samme matrix som den foregående. Du kan også tildele et element til et array ved hjælp af dets indeks. For eksempel:

age[3] = 20;

Ovenstående udsagn gemmer værdien 20 i indeks 3 for det array, der hedder alder. Det betyder, at 20 vil være den 4 th element i arrayet.

Typer af arrays

Der er to typer C ++ -arrays:

  • En dimensionel matrix
  • Multidimensionel matrix
  • Markør til en matrix

En-dimensionel matrix

Dette er en matrix, hvor dataelementerne kun er arrangeret lineært i en dimension. Det kaldes almindeligvis et 1-D-array. Syntaks:

datatype array-name[size];
  • Array-navnet er arrayets navn.
  • Størrelsen er antallet af emner, der skal gemmes i arrayet.

For eksempel:

#include using namespace std;int main(){int age[5] = { 19, 18, 21, 20, 17 };for (int x = 0; x < 5; x++){cout <

Produktion:

Her er et screenshot af koden:

Kode Forklaring:

  1. Herunder iostream header-filen i vores kode. Det giver os mulighed for at læse fra og skrive til konsollen.
  2. Inkluderet std navneområdet for at bruge dets klasser og funktioner uden at kalde det.
  3. Ringer til hovedfunktionen () inden for hvilken programmets logik skal tilføjes.
  4. Start af kroppen af ​​hovedfunktionen ().
  5. Erklærer en matrix navngivet alder til at gemme 5 heltal. De 5 heltal er også initialiseret.
  6. Opret en heltalsvariabel x ved hjælp af en for-loop.
  7. Begyndelsen på for-sløjfens krop.
  8. Brug loop-variablen x til at gentage værdierne i array-alder og udskrive dem på konsollen. "\ N" er en ny linjetegn og udskrives i en ny linje efter hver iteration.
  9. Slutningen af ​​kroppen til en løkke.
  10. Slutningen af ​​hovedfunktionens () krop.

Multidimensionel matrix

Dette er en matrix, hvor dataelementer er arrangeret til at danne en matrix af arrays. Et flerdimensionelt array kan have et vilkårligt antal dimensioner, men to- og tredimensionelle arrays er almindelige. Syntaks:

datatype array-name[d1][d2][d3]… [dn];

Array-navnet er navnet på det array, der har n-dimensioner. For eksempel:

To-dimensionel matrix

Et 2D-array gemmer data på en liste med 1-D-array. Det er en matrix med rækker og kolonner. For at erklære et 2D-array skal du bruge følgende syntaks:

type array-Name [ x ][ y ];

Typen skal være en gyldig C ++ - datatype. Se et 2D-array som en tabel, hvor x angiver antallet af rækker, mens y angiver antallet af kolonner. Dette betyder, at du identificerer hvert element i et 2D-array ved hjælp af formularen a [x] [y], hvor x er antallet af række og y antallet af kolonner, som elementet hører til.

Her er et eksempel på, hvordan du initialiserer et 2D-array:

int a[2][3] = {{0, 2, 1} , /* row at index 0 */{4, 3, 7} , /* row at index 1 */};

I ovenstående eksempel har vi et 2D-array, der kan ses som en 2x3-matrix. Der er 2 rækker og 3 kolonner. Elementet 0 kan tilgås som en [0] [1], fordi det er placeret i skæringspunktet mellem rækkeindekseret 0 og kolonneindekseret 1. Elementet 3 kan tilgås som en [1] [2], fordi det er placeret ved skæringspunkt mellem række indekseret 1 og kolonne indekseret 2.

Bemærk, at vi simpelthen tilføjede krøllede seler for at differentiere de forskellige rækker af elementer. Initialiseringen kunne også have været gjort som følger:

int a[2][3] = {0, 2, 1, 4, 3, 7};};

Følgende C ++ - eksempel viser, hvordan man initialiserer og krydser et 2D-array:

#include using namespace std;int main(){// a 2x3 arrayint a[3][2] = { {0, 2}, {1, 4}, {3, 7} };// traverse array elementsfor (int i=0; i<3; i++)for (int j=0; j<2; j++){cout << "a[" <

Produktion:

Her er et screenshot af ovenstående kode:

Kode Forklaring:

  1. Herunder iostream header-filen i vores kode. Det giver os mulighed for at læse fra og skrive til konsollen.
  2. Inkluderet std navneområdet for at bruge dets klasser og funktioner uden at kalde det.
  3. Ringer til hovedfunktionen () inden for hvilken kode skal tilføjes.
  4. Start af kroppen af ​​hovedfunktionen ().
  5. En kommentar. C ++ - kompilatoren springer dette over.
  6. Erklærer et 2D-array på 3 rækker og 2 kolonner. Elementer er også blevet føjet til arrayet.
  7. En kommentar. C ++ - kompilatoren springer dette over.
  8. Oprettelse af en variabel i ved hjælp af a for en loop. Denne variabel gentages over rækkeindekserne i arrayet.
  9. Oprettelse af en variabel j ved hjælp af a for en loop. Denne variabel gentager sig over matrixens kolonneindekser.
  10. Start af sløjfernes krop.
  11. Udskriv værdierne for variabler i og j på konsollen inden for firkantede parenteser på konsollen.
  12. Udskriv værdien, der er gemt i indeks [i] [j] i arrayet a.
  13. Slutningen af ​​sløjferne.
  14. Hovedfunktionen () skal returnere et heltal, hvis programmet kører fint.
  15. Slutningen af ​​hovedfunktionens () krop.

Tre-dimensionel matrix

Et 3D-array er et array af arrays. Hvert element i et 3D-array er identificeret ved et sæt med 3 indekser. For at få adgang til elementerne i et 3D-array bruger vi tre til sløjfer. For eksempel:

#includeusing namespace std;void main(){int a[2][3][2] = {{{4, 8},{2, 4},{1, 6}}, {{3, 6},{5, 4},{9, 3}}};cout << "a[0][1][0] = " << a[0][1][0] << "\n";cout << "a[0][1][1] = " << a[0][1][1] << "\n";}

Produktion:

Her er et screenshot af koden:

Kode Forklaring:

  1. Herunder iostream header-filen i vores kode. Det giver os mulighed for at læse fra og skrive til konsollen.
  2. Inkluderet std navneområdet for at bruge dets klasser og funktioner uden at kalde det.
  3. Ringer til hovedfunktionen () inden for hvilken programmets logik skal tilføjes.
  4. Start af hovedfunktionens () krop.
  5. Erklærer et 3D-array med navnet 2x3x2. Værdierne for arrayet er også initialiseret.
  6. Adgang til det element, der er gemt i indeks [0] [1] [0] i arrayet og udskrive det på konsollen.
  7. Adgang til det element, der er gemt i indeks [0] [1] [1] i arrayet og udskrive det på konsollen.
  8. Slutningen af ​​hovedfunktionens () krop.

Markør til en matrix

En markør er en variabel, der indeholder en adresse. Bortset fra at bruge en markør til at gemme adressen på en variabel, kan vi bruge den til at gemme adressen på en matrixcelle. Navnet på en matrix peger konstant på det første element. Overvej nedenstående erklæring:

int age[5];

Alderen er en markør til $ age [0], adressen på det første element i en matrix med navnet age. Overvej følgende eksempel:

#include using namespace std;int main(){int *john;int age[5] = { 19, 18, 21, 20, 17 };john = age;cout << john << "\n";cout << *john;}

Produktion:

Bemærk, at den første værdi af ovenstående output muligvis returnerer en anden værdi afhængigt af den adresse, der er tildelt det første element i arrayet i din computers hukommelse.

Her er et screenshot af koden:

Kode Forklaring:

  1. Herunder iostream header-filen i vores kode. Det giver os mulighed for at læse fra og skrive til konsollen.
  2. Inkluderet std navneområdet for at bruge dets klasser og funktioner uden at kalde det.
  3. Ringer til hovedfunktionen () inden for hvilken programmets logik skal tilføjes.
  4. Start af hovedfunktionens () krop.
  5. Erklærer en markørvariabel med navnet * john.
  6. Erklærer et heltal array med navnet age for at gemme 5 heltal. Værdierne for heltalene er også initialiseret.
  7. Tildeling af variablen john værdien af ​​adressen på det element, der er gemt i det første indeks for matrixalderen.
  8. Udskrivning af værdien af ​​variabel john, som er adressen på det element, der er gemt i det første indeks i matrixalderen.
  9. Udskrivning af den første værdi, der er gemt i matrixalderen.
  10. Slutningen af ​​hovedfunktionens () krop.

Arraynavne kan bruges som konstante markører, og omvendt er også sandt. Dette betyder, at du kan få adgang til den værdi, der er gemt i indeks 3 i array-alder med * (age + 3). For eksempel:

#include using namespace std;int main() {// an array of 5 elements.int age[5] = { 19, 18, 21, 20, 17 };int *p;p = age;// output array valuescout << "Using pointer: " << endl;for (int x=0; x<5; x++) {cout << "*(p + " << x << ") : ";cout << *(p + x) << endl;}cout << "Using age as address: " << endl;for (int x = 0; x < 5; x++) {cout << "*(age + " << x << ") : ";cout << *(age + x) << endl;}return 0;}

Produktion:

Her er et screenshot af koden:

Kode Forklaring:

  1. Herunder iostream header-filen i vores kode. Det giver os mulighed for at læse fra og skrive til konsollen.
  2. Inkluderet std navneområdet for at bruge dets klasser og funktioner uden at kalde det.
  3. Opkald til hovedfunktionen () og start af hovedfunktionens () funktion.
  4. En kommentar. C ++ - kompilatoren springer dette over.
  5. Erklærer en matrix navngivet alder til at gemme 5 heltal.
  6. Oprettelse af et heltalsmarkør s.
  7. Tildel p værdien af ​​adressen på det første element i matrixalderen.
  8. En kommentar. C ++ - kompilatoren springer dette over.
  9. Udskriv tekst på konsollen.
  10. Opret et heltal x ved hjælp af a for en loop. {Markerer begyndelsen på kroppen til en løkke.
  11. Udskriv værdierne på x kombineret med en anden tekst på konsollen.
  12. Udskriv værdierne på * (p + x) på konsollen.
  13. Slutningen af ​​kroppen til en løkke.
  14. Udskriv tekst på konsollen.
  15. Opret en variabel x ved hjælp af a for en loop. {Markerer begyndelsen på kroppen til for-sløjfen.
  16. Udskriv værdierne på x fra 0 til 4 sammen med en anden tekst.
  17. Udskriv værdierne * (alder + x).
  18. Slutningen af ​​for-sløjfens krop.
  19. Returner værdi, hvis programmet kører med succes.
  20. Slutningen af ​​hovedfunktionens () krop.

Adgang til værdierne i en matrix

Elementerne i en matrix fås ved hjælp af deres respektive indekser. Indekset for det element, der skal tilgås, tilføjes inden for firkantede parenteser [] umiddelbart efter arraynavnet. For eksempel:

int john = age[2];

I ovenstående eksempel angiver vi simpelthen, at johns alder er gemt i indeks 2 i arrayet med navnet age. Det betyder, at Johns alder er den 3 rd værdi i array alder. Her er et komplet C ++ - eksempel, der viser, hvordan du får adgang til og udskriver denne værdi:

#includeusing namespace std;int main(){int age[5] = { 19, 18, 21, 20, 17 };int john = age[2];cout << "The age of John is:"<

Produktion:

Her er et screenshot af koden:

Kode Forklaring:

  1. Herunder iostream header-filen i vores kode. Det giver os mulighed for at læse fra og skrive til konsollen.
  2. Inkluderet std navneområdet for at bruge dets klasser og funktioner uden at kalde det.
  3. Ringer til hovedfunktionen () inden for hvilken kode skal tilføjes.
  4. Start af en krop af hovedfunktionen ().
  5. Erklærer en matrix med navnet alder til at gemme 5 heltalselementer.
  6. Adgang til den værdi, der er gemt i indeks 2 i matrixalderen og lagring af dens værdi i en variabel med navnet john.
  7. Udskrivning af værdien af ​​variabel john på konsollen sammen med anden tekst.

Fordele ved en matrix i C ++

Her er fordele / fordele ved at bruge Array i C ++:

  • Matrixelementer kan let krydses.
  • Nem at manipulere matrixdata.
  • Matrixelementer kan fås tilfældigt.
  • Arrays letter kodeoptimering; derfor kan vi udføre meget arbejde ved hjælp af mindre kode.
  • Nem at sortere matrixdata.

Ulemper ved en matrix i C ++

  • En matrix har en fast størrelse; Derfor kan vi ikke tilføje nye elementer til det efter initialisering.
  • Tildeling af mere hukommelse end kravet fører til spild af hukommelsesplads, og mindre allokering af hukommelse kan skabe et problem.
  • Antallet af elementer, der skal lagres i en matrix, skal være kendt på forhånd.

Resumé

  • En matrix er en datastruktur, der gemmer elementer af samme datatype.
  • Matrixelementer lagres sekventielt.
  • Matrixelementerne er angivet ved hjælp af deres respektive indekser. Det første element er ved indeks 0, mens det sidste element er ved indeks n-1, hvor er det samlede antal array-elementer.
  • Erklæringen om en matrix involverer at definere datatyperne for matrixelementerne samt antallet af elementer, der skal lagres i arrayet.
  • Et endimensionelt array lagrer elementer sekventielt.
  • Et todimensionelt array gemmer elementer i rækker og kolonner.
  • Et tredimensionelt array er et array af arrays.
  • Elementer kan føjes til en matrix ved hjælp af deres indekser.
  • Der åbnes adgang til matrixelementer ved hjælp af deres indekser.
  • Et multidimensionelt array har mere end en dimension.
  • Arraynavnet peger på sit første element.
  • Arrays har en fast størrelse, hvilket betyder at nye elementer ikke kan føjes til arrayet efter initialisering.