C++ kalboje masyvas yra duomenų struktūra, kuri naudojama kelioms panašių duomenų tipų reikšmėms saugoti gretimoje atminties vietoje.
Pavyzdžiui , jei turime saugoti 4 ar 5 mokinių pažymius, galime lengvai juos išsaugoti sukurdami 5 skirtingus kintamuosius, bet jei norime išsaugoti 100 mokinių pažymius arba, tarkime, 500 mokinių, tada bus labai sudėtinga sukurti tokius kintamųjų skaičius ir juos valdyti. Dabar į paveikslėlį atsiranda masyvai, kurie gali tai padaryti lengvai, tiesiog sukuriant reikiamo dydžio masyvą.

Masyvų savybės C++
- Masyvas yra to paties tipo duomenų rinkinys, saugomas gretimoje atminties vietoje.
- Masyvo indeksavimas prasideda nuo 0. Tai reiškia, kad pirmasis elementas saugomas 0-ame indekse, antrasis – 1-ame ir pan.
- Masyvo elementus galima pasiekti naudojant jų indeksus.
- Kai masyvas deklaruojamas, jo dydis išlieka pastovus visoje programoje.
- Masyvas gali turėti kelis matmenis.
- Masyvo dydį baitais galima nustatyti pagal operatorių sizeof, kurį naudodami taip pat galime rasti elementų skaičių masyve.
- Masyve saugomų elementų tipo dydį galime rasti atėmę gretimus adresus.
Masyvo deklaracija C++
C++ kalboje galime deklaruoti masyvą, tiesiog pirmiausia nurodydami duomenų tipą, o tada masyvo pavadinimą ir jo dydį.
data_type array_name[Size_of_array];>
Pavyzdys
int arr[5];>
Čia
- int: Tai duomenų, kurie turi būti saugomi masyve, tipas. Taip pat galime naudoti kitus duomenų tipus, tokius kaip char, float ir double.
- arr: Tai yra masyvo pavadinimas.
- 5: Tai yra masyvo dydis, o tai reiškia, kad masyve gali būti saugomi tik 5 elementai.

Masyvo inicijavimas C++
C++ kalboje masyvą galime inicijuoti įvairiais būdais, tačiau aptarsime kai kuriuos dažniausiai pasitaikančius masyvo inicijavimo būdus. Mes galime inicijuoti masyvą deklaravimo metu arba po jo.
1. Inicijuoti masyvą reikšmėmis C++
Mes inicijavome masyvą su reikšmėmis. Garbanotuose skliaustuose „{}“ pateiktos reikšmės priskiriamos masyvai. Čia 1 saugomas arr[0], 2 arr[1] ir pan. Čia masyvo dydis yra 5.
int arr[5] = {1, 2, 3, 4, 5};>2. C++ kalboje inicijuokite masyvą su reikšmėmis ir be dydžio
Masyvą inicijavome reikšmėmis, bet nedeklaravome masyvo ilgio, todėl masyvo ilgis yra lygus elementų skaičiui riestiniuose skliaustuose.
java o sąlyga
int arr[] = {1, 2, 3, 4, 5};>3. Inicijuoti masyvą po deklaravimo (naudojant kilpas)
Mes inicijavome masyvą naudodami kilpą, paskelbę masyvą. Šis metodas paprastai naudojamas, kai norime gauti vartotojo informaciją arba negalime priskirti elementų po vieną kiekvienam masyvo indeksui. Galime keisti ciklo sąlygas arba pakeisti inicijavimo reikšmes pagal reikalavimus.
for (int i = 0; i arr[i] = value; }>
4. Iš dalies inicijuokite masyvą C++
Čia mes paskelbėme masyvą „partialArray“, kurio dydis „5“ ir tik su reikšmėmis „1“ ir „2“. Taigi šios reikšmės saugomos prie pirmųjų dviejų indeksų, o likusiuose indeksuose saugomas „0“.
int partialArray[5] = {1, 2};>5. C++ kalboje masyvą inicijuokite nuliu
Mes galime inicijuoti masyvą su visais elementais kaip „0“, nurodydami „0“ riestiniuose skliaustuose. Tai atsitiks nulio atveju, tik jei bandysime inicijuoti masyvą su kita reikšme, tarkime, „2“, naudodami šį metodą, tada „2“ bus saugomas tik 0-ame indekse.
int zero_array[5] = {0};>Prieiga prie masyvo elemento C++
Masyvo elementus galima pasiekti nurodant masyvo pavadinimą, tada elemento indeksą, įtrauktą į masyvo indekso operatorių []. Pavyzdžiui, arr[i].
1 pavyzdys: C++ programa, skirta parodyti, kaip pasiekti masyvo elementus
C++ // C++ Program to Illustrate How to Access Array Elements #include using namespace std; int main() { int arr[3]; // Inserting elements in an array arr[0] = 10; arr[1] = 20; arr[2] = 30; // Accessing and printing elements of the array cout << 'arr[0]: ' << arr[0] << endl; cout << 'arr[1]: ' << arr[1] << endl; cout << 'arr[2]: ' << arr[2] << endl; return 0; }> Išvestis
arr[0]: 10 arr[1]: 20 arr[2]: 30>
Atnaujinkite masyvo elementą
Norėdami atnaujinti masyvo elementą, galime naudoti indeksą, kurį norime atnaujinti, esantį masyvo apatinio indekso operatoriuje, ir priskirti naują reikšmę.
arr[i] = new_value;>
Pereikite masyvą C++
Mes galime pereiti per masyvą kilpos pagalba naudojant indeksavimą C++. Pirma, inicijavome masyvą „table_of_dwo“, kurio kartotinis yra 2. Po to paleidžiame for kilpą nuo 0 iki 9, nes masyve indeksavimas prasideda nuo nulio. Todėl naudodami indeksus spausdiname visas masyve saugomas reikšmes.
2 pavyzdys: C++ programa, iliustruojanti, kaip pereiti masyvą
C++ // C++ Program to Illustrate How to Traverse an Array #include using namespace std; int main() { // Initialize the array int table_of_two[10] = { 2, 4, 6, 8, 10, 12, 14, 16, 18, 20 }; // Traverse the array using for loop for (int i = 0; i < 10; i++) { // Print the array elements using indexing cout << table_of_two[i] << ' '; } return 0; }> Išvestis
2 4 6 8 10 12 14 16 18 20>
Masyvo dydis C++
C++ neturime ilgio funkcijos kaip Java, kad rastume masyvo dydį, bet galime apskaičiuoti masyvo dydį naudodami sizeof() operatorių triukas. Pirmiausia atmintyje randame viso masyvo užimamą dydį ir padalijame jį iš masyve saugomo elemento tipo dydžio. Tai suteiks mums masyve saugomų elementų skaičių.
data_type size = sizeof(Array_name) / sizeof(Array_name[index]);>
3 pavyzdys: C++ programa, iliustruojanti, kaip rasti masyvo dydį
C++ // C++ Program to Illustrate How to Find the Size of an // Array #include using namespace std; int main() { int arr[] = { 1, 2, 3, 4, 5 }; // Size of one element of an array cout << 'Size of arr[0]: ' << sizeof(arr[0]) << endl; // Size of array 'arr' cout << 'Size of arr: ' << sizeof(arr) << endl; // Length of an array int n = sizeof(arr) / sizeof(arr[0]); cout << 'Length of an array: ' << n << endl; return 0; }> Išvestis
Size of arr[0]: 4 Size of arr: 20 Length of an array: 5>
Ryšys tarp masyvų ir rodyklių C++
C++ kalboje masyvai ir rodyklės yra glaudžiai susiję vienas su kitu. Masyvo pavadinimas traktuojamas kaip rodyklė, kurioje saugomas pirmojo masyvo elemento atminties adresas. Kaip jau aptarėme anksčiau, masyvo elementai yra saugomi gretimose atminties vietose, todėl mes galime pasiekti visus masyvo elementus naudodami masyvo pavadinimą.
4 pavyzdys: Ryšio tarp masyvo ir rodyklių iliustravimas
C++ // C++ Program to Illustrate that Array Name is a Pointer // that Points to First Element of the Array #include using namespace std; int main() { // Defining an array int arr[] = { 1, 2, 3, 4 }; // Define a pointer int* ptr = arr; // Printing address of the arrary using array name cout << 'Memory address of arr: ' << &arr << endl; // Printing address of the array using ptr cout << 'Memory address of arr: ' << ptr << endl; return 0; }> Išvestis
Memory address of arr: 0x7fff2f2cabb0 Memory address of arr: 0x7fff2f2cabb0>
Paaiškinimas:
Aukščiau pateiktame kode pirmiausia apibrėžiame masyvą arr ir tada paskelbkite rodyklę ptr ir priskirkite jam masyvą arr. Mes galime priskirti arr prie ptr, nes arr taip pat yra rodyklė. Po to išspausdiname atminties adresą arr naudojant nuorodos operatorių ( & ) ir taip pat atspausdinkite žymeklyje saugomą adresą ptr ir mes galime matyti arr ir ptr, abu saugo tą patį atminties adresą.
5 pavyzdys: Masyvo elementų spausdinimas be indeksavimo C++
Paprastai pasiekiame ir spausdiname masyvo elementus naudodami indeksavimą. Pavyzdžiui, norėdami pasiekti pirmąjį mūsų naudojamą elementą masyvo_pavadinimas[0]. Aukščiau aptarėme, kad masyvo pavadinimas yra rodyklė, kurioje saugomas pirmojo elemento adresas, o masyvo elementai yra saugomi gretimose vietose. Dabar mes pasieksime masyvo elementus naudodami tik masyvo pavadinimą.
C++ // C++ Program to Print Array Elements without Indexing #include using namespace std; int main() { // Define an array int arr[] = { 11, 22, 33, 44 }; // Print elements of an array cout << 'first element: ' << *arr << endl; cout << 'Second element: ' << *(arr + 1) << endl; cout << 'Third element: ' << *(arr + 2) << endl; cout << 'fourth element: ' << *(arr + 3) << endl; return 0; }> Išvestis
first element: 11 Second element: 22 Third element: 33 fourth element: 44>
Paaiškinimas
Aukščiau pateiktame kode pirmiausia paskelbėme masyvą arr su keturiais elementais. Po to spausdiname masyvo elementus. Aptarkime, kaip tai darome. Mes aptarėme, kad masyvo pavadinimas yra rodyklė, kurioje saugomas pirmojo masyvo elemento adresas, taigi, norėdami atspausdinti pirmąjį elementą, kurį nurodėme. (*arr) naudojant nuorodų panaikinimo operatorių (*) kuri išspausdina tuo adresu saugomus duomenis.
Norėdami spausdinti antrąjį masyvo elementą, pirmiausia pridedame 1 į arr kuris yra lygiavertis (adresas arr + size_of_one_element *1), kuris nukreipia žymeklį į adresą, esantį iškart po pirmojo, o po to mes panaikiname nuorodą, kad išspausdintume antrąjį elementą. Panašiai spausdiname likusius masyvo elementus nenaudodami indeksavimo.
Masyvo perdavimas funkcijai C++
Norėdami efektyviai naudoti masyvus, turėtume žinoti, kaip perduoti masyvus, kad jie veiktų. Mes galime perduoti masyvus funkcijoms kaip argumentą kaip ir kintamuosius funkcijoms, bet žinome, kad naudojant šią koncepciją masyvo pavadinimas traktuojamas kaip rodyklė, masyvą galime perduoti funkcijoms kaip argumentą ir tada pasiekti visus to masyvo elementus naudodami rodyklė.
Taigi galiausiai, masyvai visada perduodami kaip rodyklės į funkciją. Pažiūrėkime 3 būdus, kaip perduoti masyvą funkcijai, kurie dažniausiai naudojami.
1. Masyvo perdavimas kaip rodyklė
Šiuo metodu mes tiesiog perduodame masyvo pavadinimą funkcijos iškvietime, o tai reiškia, kad perduodame adresą pirmajam masyvo elementui. Šiuo metodu galime modifikuoti funkcijos masyvo elementus.
Sintaksė
return_type function_name ( data_type *array_name ) { // set of statements }>2. Masyvo kaip nedydžio masyvo perdavimas
Taikant šį metodą, funkcija priima masyvą naudodama paprastą masyvo deklaraciją be dydžio kaip argumento.
Sintaksė
return_type function_name ( data_type array_name[] ) { // set of statements }>3. Masyvo kaip dydžio masyvo perdavimas
Taikant šį metodą, funkcija priima masyvą naudodama paprastą masyvo deklaraciją su dydžiu kaip argumentu. Mes naudojame šį metodą nustatydami masyvo dydį tik norėdami nurodyti masyvo dydį.
Sintaksė
return_type function_name(data_type array_name[size_of_array]){ // set of statements }> Pastaba: Masyvas bus traktuojamas kaip perduotos funkcijos rodyklė, nesvarbu, kokį metodą naudosime. Kai masyvas perduodamas kaip rodyklės, jie praras informaciją apie jo dydį, todėl atsiras reiškinys, pavadintas kaip Array Decay.
Pavyzdys: skirtingų būdų, kaip perduoti masyvus funkcijai, iliustravimas
C++ #include using namespace std; // passing array as a sized array argument void printArraySized(int arr[3], int n) { cout << 'Array as Sized Array Argument: '; for (int i = 0; i < n; i++) { cout << arr[i] << ' '; } cout << endl; } // passing array as an unsized array argument void printArrayUnsized(int arr[], int n) { cout << 'Array as Unsized Array Argument: '; for (int i = 0; i < n; i++) { cout << *(arr + i) << ' '; } cout << endl; } // Passing array as a pointer argument void printArrayPointer(int* ptr, int n) { // Print array elements using pointer ptr // that store the address of array passed cout << 'Array as Pointer Argument: '; for (int i = 0; i < n; i++) { cout << ptr[i] << ' '; } } // driver code int main() { int arr[] = { 10, 20, 30 }; // Call function printArray and pass // array and its size to it. printArraySized(arr, 3); printArrayUnsized(arr, 3); printArrayPointer(arr, 3); return 0; }> Išvestis
Array as Sized Array Argument: 10 20 30 Array as Unsized Array Argument: 10 20 30 Array as Pointer Argument: 10 20 30>
Daugiamačiai masyvai C++
Masyvai, deklaruoti daugiau nei vienu matmeniu, vadinami daugiamačiais masyvais. Plačiausiai naudojami daugiamačiai masyvai yra 2D masyvai ir 3D matricos. Šie masyvai paprastai pateikiami eilučių ir stulpelių pavidalu.
Daugiamatis masyvo deklaracija
Data_Type Array_Name[Size1][Size2]...[SizeN];>
kur,
- Duomenų tipas: Duomenų, kurie turi būti saugomi masyve, tipas.
- Array_Name: Masyvo pavadinimas.
- Dydis1, Size2,…, SizeN: Kiekvieno matmens dydis.
Dviejų dimensijų masyvas C++
C++ kalboje dvimatis masyvas yra elementų, išdėstytų eilutėmis ir stulpeliais, grupavimas. Kiekvienas elementas pasiekiamas naudojant du indeksus: vieną eilutę ir kitą stulpelį, todėl jį lengva vizualizuoti kaip lentelę arba tinklelį.
2D masyvo sintaksė
data_Type array_name[n][m];>
kur,
- n: Eilučių skaičius.
- m: Stulpelių skaičius.

Pavyzdys: C++ programa, skirta iliustruoti dvimatį masyvą
C++ // c++ program to illustrate the two dimensional array #include using namespace std; int main() { // Declaring 2D array int arr[4][4]; // Initialize 2D array using loop for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { arr[i][j] = i + j; } } // Printing the element of 2D array for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { cout << arr[i][j] << ' '; } cout << endl; } return 0; }> Išvestis
0 1 2 3 1 2 3 4 2 3 4 5 3 4 5 6>
Paaiškinimas
Aukščiau pateiktame kode paskelbėme 2D masyvą su 4 eilutėmis ir 4 stulpeliais, po to inicijavome masyvą reikšme (i+j) kiekvienoje ciklo iteracijoje. Tada mes spausdiname 2D masyvą naudodami įdėtą kilpą ir žemiau esančioje išvestyje matome, kad yra 4 eilutės ir 4 stulpeliai.
Trimatis masyvas C++
3D masyvas naudoja tris matmenis. Jai pavaizduoti gali būti naudojama įvairių dvimačių masyvų kolekcija, sukrauta viena ant kitos. Trys indeksai – eilutės indeksas, stulpelio indeksas ir gylio indeksas yra naudojami kiekvienam 3D masyvo elementui unikaliai identifikuoti.
Trimačio masyvo deklaracija C++
Norėdami deklaruoti 3D masyvą C++, turime nurodyti trečiąjį jo matmenį kartu su 2D matmenimis.
Data_Type Array_Name[D][R][C];>
kur,
- Duomenų tipas: Kiekviename elemente saugomų duomenų tipas.
- Array_Name: Masyvo pavadinimas
- D: 2D matricų skaičius arba masyvo gylis.
- R: Eilučių skaičius kiekviename 2D masyve.
- C: Stulpelių skaičius kiekviename 2D masyve.
Pavyzdys
int array[3][3][3];>

Pavyzdys: C++ programa, skirta iliustruoti 3d masyvą
C++ // C++ program to illustrate the 3d array #include using namespace std; int main() { // declaring 3d array int arr[3][3][3]; // initializing the array for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { for (int k = 0; k < 3; k++) { arr[i][j][k] = i + j + k; } } } // printing the array for (int i = 0; i < 3; i++) { cout << i << 'st layer:' << endl; for (int j = 0; j < 3; j++) { for (int k = 0; k < 3; k++) { cout << arr[i][j][k] << ' '; } cout << endl; } cout << endl; } return 0; }> Išvestis
0st layer: 0 1 2 1 2 3 2 3 4 1st layer: 1 2 3 2 3 4 3 4 5 2st layer: 2 3 4 3 4 5 4 5 6>
Paaiškinimas
Aukščiau pateiktame kode paskelbėme 3D masyvą ir inicijavome jį naudodami tris įdėtas kilpas. Po to vėl išspausdinome visus 3D masyvo sluoksnius naudodami tris įdėtas kilpas, kaip matyti išvestyje.
susiję straipsniai
- Daugiamačiai masyvai C++
- Masyvo savybės
- Array Decay
