Masyvai C ++ - Paskelbti - Inicijuoti - Masyvo pavyzdžių pavyzdys

Turinys:

Anonim

Kas yra masyvas?

Masyvas yra duomenų struktūra, kurioje nuosekliai saugomas to paties tipo duomenų elementas. C ++ masyvas turi fiksuoto dydžio.

Masyvą galite pamatyti kaip panašių duomenų tipo kintamųjų rinkinį. Užuot deklaravę kiekvieną kintamąjį ir priskyrę jam vertę atskirai, galite deklaruoti vieną kintamąjį (masyvą) ir prie jo pridėti įvairių kintamųjų reikšmes. Kiekvieną masyvo pridėtinę vertę identifikuoja indeksas.

Šioje C ++ pamokoje sužinosite:

  • Kas yra masyvas?
  • Kodėl mums reikia masyvų?
  • Paskelbkite masyvą C ++
  • Masyvo inicijavimas
  • Masyvų tipai
    • Vienmatis masyvas
    • Daugialypis masyvas
    • Dviejų matmenų masyvas
    • Trijų matmenų masyvas
    • Masyvo žymeklis
  • Prieiga prie masyvo reikšmių
  • Masyvo pranašumai C ++
  • Masyvo trūkumai C ++

Kodėl mums reikia masyvų?

Masyvai yra labai svarbūs bet kuria programavimo kalba. Jie suteikia patogesnį kintamųjų laikymo būdą arba panašaus tipo duomenų rinkimą kartu, o ne atskirai. Kiekviena masyvo reikšmė bus pasiekiama atskirai.

Paskelbkite masyvą C ++

Masyvo deklaracijoje C ++ nurodomas masyvo saugotinų elementų tipas ir skaičius. Sintaksė:

type array-Name [ array-Size ];

Vieno matmens masyvo deklaravimo C ++ taisyklės.

  • Tipas: tipas yra elementų, kurie bus saugomi masyve, tipas ir jis turi būti galiojantis C ++ duomenų tipas.
  • Masyvo pavadinimas: masyvo pavadinimas yra masyvui priskirtinas vardas.
  • Masyvo dydis: masyvo dydis yra elementų, kurie bus saugomi masyve, skaičius. Jis turi būti sveikas skaičius ir didesnis nei 0.

Pvz., Galite sukurti masyvą pavadinimu „amžius“ ir išsaugoti 5 mokinių amžių taip:

int age[5];

Masyvo amžiuje bus saugomi 5 sveikieji skaičiai, atspindintys skirtingų studentų amžių.

Masyvo inicijavimas

Masyvo inicijavimas yra elementų priskyrimas / saugojimas masyvui. Inicializuoti galima vienu pareiškimu arba po vieną. Atkreipkite dėmesį, kad pirmasis masyvo elementas saugomas indekse 0, o paskutinis elementas saugomas indekse n-1, kur n yra bendras masyvo elementų skaičius.

Amžiaus masyvo atveju pirmasis elementas bus saugomas indekse 0, o paskutinis elementas bus saugomas 4 rodyklėje.

Panaudokime amžiaus masyvą, kad parodytume, kaip galima atlikti masyvo inicijavimą:

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

Bendras elementų skaičius, esantis {}, negali viršyti vertės, nurodytos []. Elementas 19 yra indekse 0, 18 indekse 1, 21 rodyklėje 2, 20 rodyklėje 3 ir 17 rodyklėje 4. Jei nenurodote elementų, kurie turi būti saugomi masyve, skaičiaus [], masyvas bus tik pakankamai didelis, kad būtų galima laikyti elementus, pridėtus {}. Pavyzdžiui:

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

Ankstesnis sakinys sukurs lygiai tą patį masyvą kaip ir ankstesnis. Taip pat galite priskirti vieną elementą masyvui naudodami jo indeksą. Pavyzdžiui:

age[3] = 20;

Pirmiau pateiktame sakinyje bus išsaugota 20 vertė masyvo, pavadinto amžiuje, 3 rodyklėje. Tai reiškia, kad 20 bus 4 -asis masyvo elementas.

Masyvų tipai

Yra dviejų tipų C ++ masyvai:

  • Vienmatis masyvas
  • Daugialypis masyvas
  • Masyvo žymeklis

Vienmatis masyvas

Tai masyvas, kuriame duomenų elementai yra išdėstyti tiesiškai tik viename matmenyje. Paprastai jis vadinamas 1-D masyvu. Sintaksė:

datatype array-name[size];
  • Masyvo pavadinimas yra masyvo pavadinimas.
  • Dydis yra elementų, kurie bus saugomi masyve, skaičius.

Pavyzdžiui:

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

Išvestis:

Čia yra kodo ekrano kopija:

Kodo paaiškinimas:

  1. „Iostream“ antraštės failo įtraukimas į mūsų kodą. Tai leis mums skaityti ir rašyti į konsolę.
  2. Įtraukiant standartinę vardų sritį, kad būtų galima naudoti jos klases ir funkcijas jos nekviečiant.
  3. Pagrindinės () funkcijos iškvietimas, į kurį turėtų būti įtraukta programos logika.
  4. Pagrindinės () funkcijos kūno pradžia.
  5. Deklaruojant masyvą, kurio amžius yra 5 sveikieji skaičiai. Taip pat inicializuoti 5 sveiki skaičiai.
  6. Sukurkite sveiko skaičiaus kintamąjį x naudodami „for for loop“.
  7. Už kilpos kūno pradžia.
  8. Naudodami ciklo kintamąjį x pakartokite masyvo amžiaus reikšmes ir atspausdinkite jas konsolėje. "\ N" yra naujos eilutės simbolis ir spausdinamas visoje eilutėje po kiekvieno kartojimo.
  9. Kilpos kūno pabaiga.
  10. Pagrindinės () funkcijos kūno pabaiga.

Daugialypis masyvas

Tai masyvas, kuriame duomenų elementai yra išdėstyti taip, kad sudarytų masyvų masyvą. Daugialypis matrica gali turėti bet kokį matmenų skaičių, tačiau dvimačiai ir trimačiai matricos yra įprasti. Sintaksė:

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

Masyvo pavadinimas yra masyvo, kurio matmenys bus n, pavadinimas. Pavyzdžiui:

Dviejų matmenų masyvas

2D masyvas saugo duomenis sąraše su 1-D masyvu. Tai matrica su eilutėmis ir stulpeliais. Norėdami paskelbti 2D masyvą, naudokite šią sintaksę:

type array-Name [ x ][ y ];

Tipas turi būti galiojantis C ++ duomenų tipas. Žiūrėkite 2D masyvą kaip lentelę, kur x žymi eilučių skaičių, o y - stulpelių skaičių. Tai reiškia, kad kiekvieną 2D masyvo elementą identifikuojate naudodami formą [x] [y], kur x yra eilutės skaičius ir y stulpelių, kuriems priklauso elementas, skaičius.

Štai pavyzdys, kaip inicializuoti 2D masyvą:

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

Ankstesniame pavyzdyje mes turime 2D masyvą, kuris gali būti vertinamas kaip 2x3 matrica. Yra 2 eilutės ir 3 stulpeliai. Elementą 0 galima pasiekti kaip [0] [1], nes jis yra indeksuotų 0 ir 1 stulpelių indeksų sankirtoje. Prie elemento 3 galima patekti kaip [1] [2], nes jis yra indeksuotų 1 ir 2 stulpelių indeksų sankirta.

Atkreipkite dėmesį, kad mes tiesiog pridėjome garbanotas petnešas, kad išskirtume skirtingas elementų eilutes. Inicializavimas taip pat galėjo būti atliekamas taip:

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

Šis C ++ pavyzdys parodo, kaip inicijuoti ir pereiti 2D masyvą:

#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[" <

Išvestis:

Čia yra aukščiau esančio kodo ekrano kopija:

Kodo paaiškinimas:

  1. „Iostream“ antraštės failo įtraukimas į mūsų kodą. Tai leis mums skaityti ir rašyti į konsolę.
  2. Įtraukiant standartinę vardų sritį, kad būtų galima naudoti jos klases ir funkcijas jos nekviečiant.
  3. Skambinimas pagrindinei () funkcijai, kurioje turėtų būti pridėtas kodas.
  4. Pagrindinės () funkcijos kūno pradžia.
  5. Komentaras. C ++ kompiliatorius tai praleis.
  6. Deklaruojamas 2D masyvas iš 3 eilučių ir 2 stulpelių. Elementai taip pat buvo pridėti prie masyvo.
  7. Komentaras. C ++ kompiliatorius tai praleis.
  8. Kintamojo i sukūrimas naudojant a kilpą. Šis kintamasis kartosis masyvo eilutės indeksuose.
  9. Kintamojo j sukūrimas naudojant a kilpai. Šis kintamasis kartos masyvo stulpelių rodiklius.
  10. Kilpų kūno pradžia.
  11. Atsispausdinkite kintamųjų i ir j reikšmes konsolėje, esančioje konsolės laužtiniuose skliaustuose.
  12. Išspausdinkite masyvo a indekso [i] [j] išsaugotą vertę.
  13. Kilpų kūno pabaiga.
  14. Funkcija main () turėtų grąžinti sveiko skaičiaus vertę, jei programa veikia gerai.
  15. Pagrindinės () funkcijos kūno pabaiga.

Trijų matmenų masyvas

3D masyvas yra masyvų masyvas. Kiekvieną 3D masyvo elementą identifikuoja 3 indeksų rinkinys. Norėdami pasiekti 3D masyvo elementus, kilpoms naudojame tris. Pavyzdžiui:

#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";}

Išvestis:

Čia yra kodo ekrano kopija:

Kodo paaiškinimas:

  1. „Iostream“ antraštės failo įtraukimas į mūsų kodą. Tai leis mums skaityti ir rašyti į konsolę.
  2. Įtraukiant standartinę vardų sritį, kad būtų galima naudoti jos klases ir funkcijas jos nekviečiant.
  3. Pagrindinės () funkcijos iškvietimas, į kurį turėtų būti įtraukta programos logika.
  4. Pagrindinės () funkcijos kūno pradžia.
  5. 3D masyvo, pavadinto 2x3x2 dydžio, deklaravimas. Masyvo reikšmės taip pat buvo inicijuotos.
  6. Prieiga prie elemento, saugomo masyvo rodyklėje [0] [1] [0], ir jo spausdinimas ant konsolės.
  7. Prieiga prie elemento, saugomo masyvo rodyklėje [0] [1] [1], ir jo spausdinimas ant konsolės.
  8. Pagrindinės () funkcijos kūno pabaiga.

Masyvo žymeklis

Rodyklė yra kintamasis, turintis adresą. Išskyrus rodiklio naudojimą kintamojo adresui išsaugoti, galime jį naudoti masyvo ląstelės adresui išsaugoti. Masyvo pavadinimas nuolat nurodo jo pirmąjį elementą. Apsvarstykite toliau pateiktą deklaraciją:

int age[5];

Amžius yra rodiklis iki $ age [0], pirmo masyvo, pavadinto amžiaus, elemento adreso. Apsvarstykite šį pavyzdį:

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

Išvestis:

Atkreipkite dėmesį, kad pirmoji pirmiau minėto išvesties reikšmė gali grąžinti kitą vertę, priklausomai nuo adreso, priskirto pirmajam masyvo elementui jūsų kompiuterio atmintyje.

Čia yra kodo ekrano kopija:

Kodo paaiškinimas:

  1. „Iostream“ antraštės failo įtraukimas į mūsų kodą. Tai leis mums skaityti ir rašyti į konsolę.
  2. Įtraukiant standartinę vardų sritį, kad būtų galima naudoti jos klases ir funkcijas jos nekviečiant.
  3. Pagrindinės () funkcijos iškvietimas, į kurį turėtų būti įtraukta programos logika.
  4. Pagrindinės () funkcijos kūno pradžia.
  5. Deklaruojant rodyklės kintamąjį, pavadintą * john.
  6. Deklaruojant sveiko skaičiaus masyvą, pavadintą amžius, saugomi 5 sveikieji skaičiai. Taip pat buvo inicijuotos sveikųjų skaičių reikšmės.
  7. Kintamajam john priskiriant elemento, saugomo pirmajame masyvo amžiaus rodiklyje, adreso vertę.
  8. Spausdinama kintamojo john reikšmė, kuri yra elemento, saugomo pirmajame masyvo amžiaus rodiklyje, adresas.
  9. Pirmosios masyvo amžiuje išsaugotos vertės spausdinimas.
  10. Pagrindinės () funkcijos kūno pabaiga.

Masyvo vardai gali būti naudojami kaip nuolatiniai rodikliai, ir atvirkščiai - taip pat. Tai reiškia, kad galite pasiekti masyvo amžiaus 3 rodyklėje saugomą vertę naudodami * (amžius + 3). Pavyzdžiui:

#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;}

Išvestis:

Čia yra kodo ekrano kopija:

Kodo paaiškinimas:

  1. „Iostream“ antraštės failo įtraukimas į mūsų kodą. Tai leis mums skaityti ir rašyti į konsolę.
  2. Įtraukiant standartinę vardų sritį, kad būtų galima naudoti jos klases ir funkcijas jos nekviečiant.
  3. Pagrindinės () funkcijos iškvietimas ir pagrindinės () funkcijos kūno pradžia.
  4. Komentaras. C ++ kompiliatorius tai praleis.
  5. Deklaruojant masyvą, kurio amžius yra 5 sveikieji skaičiai.
  6. Sveiko skaičiaus rodyklės kūrimas p.
  7. Skiriant p masyvo amžiaus pirmojo elemento adreso vertę.
  8. Komentaras. C ++ kompiliatorius tai praleis.
  9. Atsispausdinkite tekstą konsolėje.
  10. Sukurkite sveiką skaičių x naudodami kilpą a. {Žymi už kilpos kūno pradžią.
  11. Atsispausdinkite x reikšmes kartu su kitu tekstu konsolėje.
  12. Atsispausdinkite konsolės * (p + x) reikšmes.
  13. Kilpos kūno pabaiga.
  14. Atsispausdinkite tekstą konsolėje.
  15. Sukurkite kintamąjį x naudodami kilpą a. {Žymi už kilpos kūno pradžią.
  16. Išspausdinkite x reikšmes nuo 0 iki 4 kartu su kitu tekstu.
  17. Atspausdinkite * (amžius + x) reikšmes.
  18. Už kilpos kūno pabaiga.
  19. Grąžinti vertę, jei programa sėkmingai veikia.
  20. Pagrindinės () funkcijos kūno pabaiga.

Prieiga prie masyvo reikšmių

Masyvo elementai pasiekiami naudojant atitinkamus indeksus. Elemento, kurį reikia pasiekti, rodyklė pridedama laužtiniuose skliaustuose [] iškart po masyvo pavadinimo. Pavyzdžiui:

int john = age[2];

Pirmiau pateiktame pavyzdyje mes tiesiog teigiame, kad Johno amžius saugomas masyvo, pavadinto amžiaus, 2 rodyklėje. Tai reiškia, kad Johno amžius yra trečioji masyvo amžiaus reikšmė. Čia yra visas C ++ pavyzdys, parodantis, kaip pasiekti ir atsispausdinti šią vertę:

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

Išvestis:

Čia yra kodo ekrano kopija:

Kodo paaiškinimas:

  1. „Iostream“ antraštės failo įtraukimas į mūsų kodą. Tai leis mums skaityti ir rašyti į konsolę.
  2. Įtraukiant standartinę vardų sritį, kad būtų galima naudoti jos klases ir funkcijas jos nekviečiant.
  3. Skambinimas pagrindinei () funkcijai, kurioje turėtų būti pridėtas kodas.
  4. Pagrindinės () funkcijos kūno pradžia.
  5. Deklaruojant masyvą, kurio amžius yra 5 sveikojo skaičiaus elementai.
  6. Prieiga prie masyvo amžiaus 2 rodyklėje saugomos vertės ir jos vertės išsaugojimas kintamajame pavadinimu john.
  7. Kintamojo „John“ reikšmės spausdinimas konsolėje kartu su kitu tekstu.

Masyvo pranašumai C ++

Čia yra „Array“ C ++ naudojimo privalumai / privalumai:

  • Masyvo elementus galima lengvai pereiti.
  • Lengva valdyti masyvo duomenis.
  • Masyvo elementus galima pasiekti atsitiktinai.
  • Masyvai palengvina kodo optimizavimą; taigi mes galime atlikti daug darbo naudodami mažiau kodo.
  • Lengva rūšiuoti masyvo duomenis.

Masyvo trūkumai C ++

  • Masyvas turi fiksuotą dydį; taigi po inicializavimo mes negalime į jį įtraukti naujų elementų.
  • Skiriant daugiau atminties nei reikalinga, eikvojama atminties vieta, o dėl mažesnio atminties paskirstymo gali kilti problema.
  • Masyve saugomų elementų skaičius turi būti žinomas iš anksto.

Santrauka

  • Masyvas yra duomenų struktūra, kurioje saugomi to paties tipo duomenų elementai.
  • Masyvo elementai saugomi nuosekliai.
  • Masyvo elementai žymimi naudojant atitinkamus indeksus. Pirmasis elementas yra indekse 0, o paskutinis elementas yra indekse n-1, kur yra bendras masyvo elementų skaičius.
  • Masyvo deklaravimas apima masyvo elementų duomenų tipų, taip pat masyve saugomų elementų skaičiaus apibrėžimą.
  • Vienmatis masyvas elementus saugo nuosekliai.
  • Dvimatis masyvas elementus saugo eilutėse ir stulpeliuose.
  • Trimatis masyvas yra masyvų masyvas.
  • Elementus galima pridėti prie masyvo naudojant jų indeksus.
  • Masyvo elementai pasiekiami naudojant jų indeksus.
  • Daugialypis masyvas turi daugiau nei vieną matmenį.
  • Masyvo pavadinimas nurodo jo pirmąjį elementą.
  • Masyvai turi fiksuotą dydį, o tai reiškia, kad po jo inicijavimo į masyvą negalima pridėti naujų elementų.