Nizovi u C ++ - Izjavi - Inicijalizirajte - Pokazivač na primjere niza

Sadržaj:

Anonim

Što je niz?

Niz je struktura podataka koja uzastopno pohranjuje element istog tipa podataka. Niz C ++ ima fiksnu veličinu.

Niz možete vidjeti kao zbirku varijabli sličnog tipa podataka. Umjesto deklariranja svake varijable i dodjeljivanja vrijednosti pojedinačno, možete deklarirati jednu varijablu (niz) i dodati joj vrijednosti različitih varijabli. Svaka vrijednost dodana nizu identificira se indeksom.

U ovom C ++ tutorialu naučit ćete:

  • Što je niz?
  • Zašto su nam potrebni nizovi?
  • Deklarirajte niz u C ++
  • Inicijalizacija niza
  • Vrste nizova
    • Jednodimenzionalni niz
    • Višedimenzionalni niz
    • Dvodimenzionalni niz
    • Trodimenzionalni niz
    • Pokazivač na niz
  • Pristup vrijednostima niza
  • Prednosti niza u C ++
  • Mane niza u C ++

Zašto su nam potrebni nizovi?

Nizovi su vrlo važni u bilo kojem programskom jeziku. Pružaju praktičniji način zajedničkog pohranjivanja varijabli ili zbirke podataka slične vrste podataka, umjesto odvojenog spremanja. Svakoj vrijednosti niza pristupit će se odvojeno.

Deklarirajte niz u C ++

Deklaracija niza u C ++ uključuje navođenje tipa kao i broja elemenata koje će niz pohraniti. Sintaksa:

type array-Name [ array-Size ];

Pravila za deklariranje jednodimenzionalnog niza u C ++.

  • Tip: vrsta je vrsta elemenata koji će se pohraniti u niz i mora biti valjani tip podataka C ++.
  • Array-Name: Array-Name je ime koje će se dodijeliti nizu.
  • Array-Size: Array-Size je broj elemenata koji će biti pohranjeni u polju. Mora biti cijeli broj i veći od 0.

Na primjer, možete stvoriti niz imena age i pohraniti dob od 5 učenika na sljedeći način:

int age[5];

Starost niza pohranit će 5 cijelih brojeva koji predstavljaju dob različitih učenika.

Inicijalizacija niza

Inicijalizacija niza je postupak dodjeljivanja / spremanja elemenata nizu. Inicijalizacija se može izvršiti u jednoj izjavi ili jednu po jednu. Imajte na umu da je prvi element u nizu pohranjen u indeksu 0, dok je zadnji element pohranjen u indeksu n-1, gdje je n ukupan broj elemenata u nizu.

U slučaju dobnog niza, prvi će se element pohraniti u indeks 0, dok će zadnji element biti pohranjen u indeks 4.

Upotrijebimo dobni niz da pokažemo kako se može izvršiti inicijalizacija niza:

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

Ukupan broj elemenata u {} ne može premašiti vrijednost navedenu u []. Element 19 nalazi se na indeksu 0, 18 na indeksu 1, 21 na indeksu 2, 20 na indeksu 3 i 17 na indeksu 4. Ako ne navedete broj elemenata koji će se pohraniti u polje unutar [], niz bit će dovoljno velik da sadrži elemente dodane unutar {}. Na primjer:

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

Gornja izjava stvorit će potpuno isti niz kao i prethodni. Također možete dodijeliti jedan element nizu koristeći njegov indeks. Na primjer:

age[3] = 20;

Gornja izjava pohranit će vrijednost 20 u indeks 3 niza imenovanog age. To znači da će 20 biti 4 -og element niza.

Vrste nizova

Postoje dvije vrste nizova C ++:

  • Jednodimenzionalni niz
  • Višedimenzionalni niz
  • Pokazivač na niz

Jednodimenzionalni niz

Ovo je niz u kojem su stavke podataka linearno poredane samo u jednoj dimenziji. Obično se naziva 1-D niz. Sintaksa:

datatype array-name[size];
  • Ime polja je ime niza.
  • Veličina je broj stavki koje će se pohraniti u niz.

Na primjer:

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

Izlaz:

Evo snimke zaslona koda:

Objašnjenje koda:

  1. Uključujući iostream datoteku zaglavlja u naš kod. Omogućit će nam čitanje s konzole i pisanje na nju.
  2. Uključujući prostor imena std kako bi koristio njegove klase i funkcije bez poziva.
  3. Pozivanje funkcije main () unutar koje treba dodati logiku programa.
  4. Početak tijela glavne () funkcije.
  5. Deklariranje niza pod nazivom age za pohranu 5 cijelih brojeva. Inicijalizirano je i 5 cijelih brojeva.
  6. Stvorite cjelobrojnu varijablu x pomoću petlje for.
  7. Početak tijela petlje for.
  8. Koristeći varijablu petlje x za prelazak preko vrijednosti dobi niza i ispis na konzoli. "\ N" je znak novog retka i ispisuje se u novi redak nakon svake iteracije.
  9. Kraj tijela petlje for.
  10. Kraj tijela glavne () funkcije.

Višedimenzionalni niz

Ovo je niz u kojem su stavke podataka raspoređene tako da tvore niz nizova. Višedimenzionalni niz može imati bilo koji broj dimenzija, ali dvodimenzionalni i trodimenzionalni nizovi su česti. Sintaksa:

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

Ime polja je ime niza koji će imati n dimenzija. Na primjer:

Dvodimenzionalni niz

2D niz pohranjuje podatke na popis s 1-D nizom. To je matrica s redovima i stupcima. Da biste deklarirali 2D niz, upotrijebite sljedeću sintaksu:

type array-Name [ x ][ y ];

Tip mora biti valjani tip podataka C ++. Pogledajte 2D niz kao tablicu, gdje x označava broj redaka, a y broj stupaca. To znači da svaki element u 2D nizu identificirate pomoću oblika a [x] [y], gdje je x broj redaka, a y broj stupaca u koji element pripada.

Evo primjera kako inicijalizirati 2D niz:

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

U gornjem primjeru imamo 2D niz koji se može vidjeti kao 2x3 matrica. Postoje 2 retka i 3 stupca. Elementu 0 može se pristupiti kao [0] [1] jer se nalazi na presjeku retka indeksiranog 0 i stupca indeksiranog 1. Elementu 3 može se pristupiti kao [1] [2] jer se nalazi na presjek reda indeksiranog 1 i stupca indeksiranog 2.

Imajte na umu da smo jednostavno dodali kovrčave zagrade kako bismo razlikovali različite redove elemenata. Inicijalizacija se također mogla izvršiti na sljedeći način:

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

Sljedeći primjer C ++ pokazuje kako se inicijalizira i prelazi 2D niz:

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

Izlaz:

Evo snimke zaslona gornjeg koda:

Objašnjenje koda:

  1. Uključujući iostream datoteku zaglavlja u naš kod. Omogućit će nam čitanje s konzole i pisanje na nju.
  2. Uključujući prostor imena std kako bi koristio njegove klase i funkcije bez poziva.
  3. Pozivanje glavne () funkcije unutar koje treba dodati kôd.
  4. Početak tijela glavne () funkcije.
  5. Komentar. Kompajler C ++ ovo će preskočiti.
  6. Deklariranje 2D niza od 3 retka i 2 stupca. Stavke su također dodane u niz.
  7. Komentar. Kompajler C ++ ovo će preskočiti.
  8. Stvaranje varijable i pomoću petlje for for. Ova će se varijabla ponavljati kroz indekse redaka niza.
  9. Stvaranje varijable j pomoću petlje for for. Ova će se varijabla ponavljati preko indeksa stupaca niza.
  10. Početak tijela petlji.
  11. Ispišite vrijednosti varijabli i i j na konzoli unutar uglatih zagrada na konzoli.
  12. Ispišite vrijednost pohranjenu u indeksu [i] [j] niza a.
  13. Kraj tijela petlji.
  14. Funkcija main () trebala bi vratiti cjelobrojnu vrijednost ako program dobro radi.
  15. Kraj tijela glavne () funkcije.

Trodimenzionalni niz

3D niz je niz nizova. Svaki element u 3D nizu identificiran je skupom od 3 indeksa. Za pristup elementima 3D niza koristimo tri for petlje. Na primjer:

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

Izlaz:

Evo snimke zaslona koda:

Objašnjenje koda:

  1. Uključujući iostream datoteku zaglavlja u naš kod. Omogućit će nam čitanje s konzole i pisanje na nju.
  2. Uključujući prostor imena std kako bi koristio njegove klase i funkcije bez poziva.
  3. Pozivanje funkcije main () unutar koje treba dodati logiku programa.
  4. Početak tijela glavne () funkcije.
  5. Deklariranje 3D niza imenovanog veličine 2x3x2. Vrijednosti niza su također inicijalizirane.
  6. Pristupiti stavci pohranjenoj u indeksu [0] [1] [0] niza i ispisati je na konzoli.
  7. Pristupiti stavci pohranjenoj u indeksu [0] [1] [1] niza i ispisati je na konzoli.
  8. Kraj tijela glavne () funkcije.

Pokazivač na niz

Pokazivač je varijabla koja sadrži adresu. Osim korištenja pokazivača za spremanje adrese varijable, možemo ga koristiti za spremanje adrese ćelije niza. Ime niza neprestano pokazuje na njegov prvi element. Razmotrite izjavu datu u nastavku:

int age[5];

Dob je pokazivač na $ age [0], adresu prvog elementa niza pod nazivom age. Razmotrimo sljedeći primjer:

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

Izlaz:

Imajte na umu da prva vrijednost gore navedenog izlaza može vratiti različitu vrijednost, ovisno o adresi dodijeljenoj prvom elementu niza u memoriji vašeg računala.

Evo snimke zaslona koda:

Objašnjenje koda:

  1. Uključujući iostream datoteku zaglavlja u naš kod. Omogućit će nam čitanje s konzole i pisanje na nju.
  2. Uključujući prostor imena std kako bi koristio njegove klase i funkcije bez poziva.
  3. Pozivanje funkcije main () unutar koje treba dodati logiku programa.
  4. Početak tijela glavne () funkcije.
  5. Deklariranje varijable pokazivača nazvane * john.
  6. Deklariranje cjelobrojnog niza pod nazivom age za pohranu 5 cijelih brojeva. Vrijednosti cijelih brojeva također su inicijalizirane.
  7. Dodjeljivanje varijabli john vrijednosti adrese stavke pohranjene u prvom indeksu dobi niza.
  8. Ispis vrijednosti varijable john, koja je adresa stavke pohranjene u prvom indeksu starosti niza.
  9. Ispis prve vrijednosti pohranjene u dobi niza.
  10. Kraj tijela glavne () funkcije.

Imena polja mogu se koristiti kao stalni pokazivači, a obrnuto je također točno. To znači da možete pristupiti vrijednosti pohranjenoj u indeksu 3 dobi niza sa * (dob + 3). Na primjer:

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

Izlaz:

Evo snimke zaslona koda:

Objašnjenje koda:

  1. Uključujući iostream datoteku zaglavlja u naš kod. Omogućit će nam čitanje s konzole i pisanje na nju.
  2. Uključujući prostor imena std kako bi koristio njegove klase i funkcije bez poziva.
  3. Pozivanje glavne () funkcije i početak tijela glavne () funkcije.
  4. Komentar. Kompajler C ++ ovo će preskočiti.
  5. Deklariranje niza pod nazivom age za pohranu 5 cijelih brojeva.
  6. Stvaranje cjelobrojnog pokazivača str.
  7. Dodjeljivanje p vrijednosti adrese prvog elementa niza age.
  8. Komentar. Kompajler C ++ ovo će preskočiti.
  9. Ispišite malo teksta na konzoli.
  10. Stvorite cijeli broj x pomoću petlje for. Oznaka {označava početak tijela petlje for.
  11. Ispišite vrijednosti x u kombinaciji s nekim drugim tekstom na konzoli.
  12. Ispišite vrijednosti * (p + x) na konzoli.
  13. Kraj tijela petlje for.
  14. Ispišite malo teksta na konzoli.
  15. Stvorite varijablu x pomoću petlje for. Oznaka {označava početak tijela petlje for.
  16. Ispišite vrijednosti x od 0 do 4 uz neki drugi tekst.
  17. Ispišite vrijednosti * (dob + x).
  18. Kraj tijela petlje for.
  19. Vrati vrijednost ako se program uspješno izvodi.
  20. Kraj tijela glavne () funkcije.

Pristup vrijednostima niza

Elementima niza pristupa se pomoću njihovih odgovarajućih indeksa. Indeks elementa kojem treba pristupiti dodaje se u uglastim zagradama [] neposredno nakon imena niza. Na primjer:

int john = age[2];

U gornjem primjeru jednostavno navodimo da se John-ova dob pohranjuje u indeks 2 niza imenovanog age. To znači da je johnova dob 3. vrijednost u dobi niza. Evo cjelovitog primjera C ++ koji pokazuje kako pristupiti i ispisati ovu vrijednost:

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

Izlaz:

Evo snimke zaslona koda:

Objašnjenje koda:

  1. Uključujući iostream datoteku zaglavlja u naš kod. Omogućit će nam čitanje s konzole i pisanje na nju.
  2. Uključujući prostor imena std kako bi koristio njegove klase i funkcije bez poziva.
  3. Pozivanje glavne () funkcije unutar koje treba dodati kôd.
  4. Početak tijela glavne () funkcije.
  5. Deklariranje niza pod nazivom age za pohranu 5 cjelobrojnih elemenata.
  6. Pristupanje vrijednosti pohranjenoj u indeksu 2 starosti niza i pohranjivanje njezine vrijednosti u varijablu koja se zove john.
  7. Ispis vrijednosti varijable john na konzoli uz drugi tekst.

Prednosti niza u C ++

Evo prednosti / koristi upotrebe Arraya u C ++:

  • Elementi niza mogu se lako prelaziti.
  • Jednostavnim rukovanjem podacima niza.
  • Elementima niza može se pristupiti nasumično.
  • Nizovi olakšavaju optimizaciju koda; stoga možemo obaviti mnogo posla koristeći manje koda.
  • Jednostavno sortiranje podataka niza.

Mane niza u C ++

  • Niz ima fiksnu veličinu; stoga mu nakon inicijalizacije ne možemo dodavati nove elemente.
  • Dodjela više memorije nego što je potrebno dovodi do gubitka memorijskog prostora, a manja dodjela memorije može stvoriti problem.
  • Broj elemenata koji se trebaju pohraniti u niz mora biti unaprijed poznat.

Sažetak

  • Niz je struktura podataka koja pohranjuje elemente istog tipa podataka.
  • Elementi polja pohranjuju se sekvencijalno.
  • Elementi niza označeni su pomoću njihovih odgovarajućih indeksa. Prvi je element s indeksom 0, dok je posljednji element s indeksom n-1, gdje je ukupan broj elemenata niza.
  • Deklaracija niza uključuje definiranje vrsta podataka elemenata niza kao i broja elemenata koji će biti pohranjeni u polju.
  • Jednodimenzionalni niz pohranjuje elemente sekvencijalno.
  • Dvodimenzionalni niz pohranjuje elemente u retke i stupce.
  • Trodimenzionalni niz je niz nizova.
  • Elementi se mogu dodati u niz pomoću njihovih indeksa.
  • Elementima niza pristupa se pomoću njihovih indeksa.
  • Višedimenzionalni niz ima više od jedne dimenzije.
  • Ime polja upućuje na njegov prvi element.
  • Nizovi imaju fiksnu veličinu, što znači da se novi elementi ne mogu dodavati u niz nakon njegove inicijalizacije.