C ++ masyvai (su pavyzdžiais)

Šioje pamokoje išmoksime dirbti su masyvais. Išmoksime deklaruoti, inicializuoti ir pasiekti masyvo elementus C ++ programavime, naudodami pavyzdžius.

C ++, masyvas yra kintamasis, galintis išsaugoti kelias to paties tipo reikšmes. Pavyzdžiui,

Tarkime, kad klasėje yra 27 mokiniai, ir mes turime saugoti jų visų pažymius. Užuot sukūrę 27 atskirus kintamuosius, galime tiesiog sukurti masyvą:

 double grade(27);

Čia klasė yra masyvas, kuriame gali būti daugiausia 27 doubletipo elementai .

C ++, masyvų dydis ir tipas negali būti pakeisti po jo deklaravimo.

C ++ masyvo deklaracija

 dataType arrayName(arraySize);

Pavyzdžiui,

 int x(6);

Čia

  • int - saugomo elemento tipas
  • x - masyvo pavadinimas
  • 6 - masyvo dydis

Prieigos elementai C ++ masyve

C ++, kiekvienas masyvo elementas yra susietas su skaičiumi. Skaičius žinomas kaip masyvo indeksas. Naudodami tuos indeksus, galime pasiekti masyvo elementus.

 // syntax to access array elements array(index);

Apsvarstykite masyvą x, kurį matėme aukščiau.

Masyvo elementai C ++

Keli dalykai, kuriuos reikia atsiminti:

  • Masyvo indeksai prasideda 0. Reikšmė x (0) yra pirmasis elementas, saugomas rodyklėje 0.
  • Jei masyvo dydis yra n, paskutinis elementas saugomas rodyklėje (n-1). Šiame pavyzdyje x (5) yra paskutinis elementas.
  • Masyvo elementai turi nuoseklius adresus. Pavyzdžiui, tarkime, kad pradinis adresas x(0)yra 2120d. Tada kito elemento adresas x(1)bus 2124d, adresas x(2)bus 2128d ir pan.
    Čia kiekvieno elemento dydis padidinamas 4. Taip yra todėl, kad dydis intyra 4 baitai.

C ++ masyvo inicijavimas

C ++ versijoje deklaravimo metu galima inicijuoti masyvą. Pavyzdžiui,

 // declare and initialize and array int x(6) = (19, 10, 8, 17, 9, 15);
C ++ masyvo elementai ir jų duomenys

Kitas masyvo inicializavimo būdas deklaravimo metu:

 // declare and initialize an array int x() = (19, 10, 8, 17, 9, 15);

Čia neminėjome masyvo dydžio. Tokiais atvejais kompiliatorius automatiškai apskaičiuoja dydį.

C ++ masyvas su tuščiais nariais

C ++, jei masyvas turi dydį n, galime laikyti masyve iki n elementų skaičių. Tačiau kas nutiks, jei kaupsime mažiau nei n elementų skaičių.

Pavyzdžiui,

 // store only 3 elements in the array int x(6) = (19, 10, 8);

Čia masyvo x dydis yra 6. Tačiau mes jį inicijavome tik su 3 elementais.

Tokiais atvejais kompiliatorius priskiria atsitiktines reikšmes likusioms vietoms. Dažnai ši atsitiktinė vertė yra tiesiog 0.

Tuštiems masyvo nariams automatiškai priskiriama 0 vertė

Kaip įterpti ir spausdinti masyvo elementus?

 int mark(5) = (19, 10, 8, 17, 9) // change 4th element to 9 mark(3) = 9; // take input from the user // store the value at third position cin>> mark(2); // take input from the user // insert at ith position cin>> mark(i-1); // print first element of the array cout <> mark(i-1);

1 pavyzdys: masyvo elementų rodymas

 #include using namespace std; int main() ( int numbers(5) = (7, 5, 6, 12, 35); cout << "The numbers are: "; // Printing array elements // using range based for loop for (const int &n : numbers) ( cout << n << " "; ) cout << "The numbers are: "; // Printing array elements // using traditional for loop for (int i = 0; i < 5; ++i) ( cout << numbers(i) << " "; ) return 0; )

Rezultatas

 Skaičiai yra: 7 5 6 12 35. Skaičiai yra: 7 5 6 12 35

Čia mes naudojome forkilpą, kad pakartotume nuo i = 0iki i = 4. Kiekvienoje iteracijoje atspausdinome numbers(i).

Masyvo elementams atspausdinti vėl panaudojome diapazoną, pagrįstą kilpa. Norėdami sužinoti daugiau apie šią kilpą, pažymėkite „C ++ Ranged for Loop“.

Pastaba: Savo diapazone pagrįstoje cikle const int &nvietoj int ndeklaracijos nurodėme kodą . Tačiau tai const int &nyra labiau pageidaujama, nes:

  1. Naudojant int nkiekvieną kartojimą masyvo elementai nukopijuojami į kintamąjį n. Tai nėra efektyvi atmintyje.
    & n, tačiau naudoja masyvo elementų atminties adresą, kad pasiektų jų duomenis nekopijuodami jų į naują kintamąjį. Tai taupo atmintį.
  2. Mes paprasčiausiai spausdiname masyvo elementus, jų nemodifikuojame. Todėl mes naudojame const, kad netyčia nekeistume masyvo reikšmių.

2 pavyzdys: paimkite naudotojo įvestis ir saugokite juos masyve

 #include using namespace std; int main() ( int numbers(5); cout << "Enter 5 numbers: " << endl; // store input from user to array for (int i = 0; i > numbers(i); ) cout << "The numbers are: "; // print array elements for (int n = 0; n < 5; ++n) ( cout << numbers(n) << " "; ) return 0; )

Rezultatas

 Enter 5 numbers: 11 12 13 14 15 The numbers are: 11 12 13 14 15

Once again, we have used a for loop to iterate from i = 0 to i = 4. In each iteration, we took an input from the user and stored it in numbers(i).

Then, we used another for loop to print all the array elements.

Example 3: Display Sum and Average of Array Elements Using for Loop

 #include using namespace std; int main() ( // initialize an array without specifying size double numbers() = (7, 5, 6, 12, 35, 27); double sum = 0; double count = 0; double average; cout << "The numbers are: "; // print array elements // use of range-based for loop for (const double &n : numbers) ( cout << n << " "; // calculate the sum sum += n; // count the no. of array elements ++count; ) // print the sum cout << "Their Sum = " << sum << endl; // find the average average = sum / count; cout << "Their Average = " << average << endl; return 0; )

Output

 The numbers are: 7 5 6 12 35 27 Their Sum = 92 Their Average = 15.3333

In this program:

  1. We have initialized a double array named numbers but without specifying its size. We also declared three double variables sum, count, and average.
    Here, sum =0 and count = 0.
  2. Then we used a range based for loop to print the array elements. In each iteration of the loop, we add the current array element to sum.
  3. Mes taip pat padidiname skaičiavimo vertę 1kiekvienoje iteracijoje, kad galėtume gauti masyvo dydį iki ciklo pabaigos.
  4. Atspausdinę visus elementus, atspausdiname visų skaičių sumą ir vidurkį. Skaičių vidurkį pateikiaaverage = sum / count;

Pastaba:for vietoj įprastos forkilpos naudojome diapazoną.

Įprasta forkilpa reikalauja, kad nurodytume pakartojimų skaičių, kurį suteikia masyvo dydis.

Tačiau diapazono forkilpa nereikalauja tokių specifikacijų.

C ++ masyvas už ribų

Jei mes paskelbsime 10 dydžio masyvą, masyve bus elementų nuo 0 iki 9 indekso.

Tačiau jei bandysime pasiekti 10 ar daugiau nei 10 indekso elementą, tai sukels neapibrėžtą elgesį.

Įdomios straipsniai...