Višedimenzionalna polja 2D polja (dvodimenzionalna polja): primjer: matrice u matematici 3Dpolja: indeksi mogu biti dan, mjesec i godina (vizualno predstavljamo blokom)... zapravo nema potrebe za vizualizacijom (podaci su ionako u nizu memorijskih lokacija) za obradu se koriste višestruke ugniježđene petlje Primjer deklaracije: int Tablica[3][5]; članove 2D polja (matrice) dohvaćamo preko dva indeksa (za redak i za stupac) Deklaracija, inicijalizacija, ispis Članovi se mogu inicijalizirati prilikom deklaracije: int tablica[3][5] = {{11,12,13,14,15}, {21,22,23,24,25}}; //po retcima Ispis: cout << tablica[0][0] << endl; Nenavedeni članovi implicitno se inicijaliziraju na nulu. Implicitno se inicijaliziraju i nenavedene vrijednosti za broj redaka/stupaca potrebna veličina memorije jednaka je produktu dimenzija (preveliki zahtjevi uzrokuju pogrešku kod izvođenja – ne kod kompilacije) preporuka: deklarirana veličina polja mora biti malo veća od najveće očekivane veličine polja Čitanje, pisanje, proračuni članovi polja često dolaze iz datoteka ako broj podataka u datoteci nije poznat, poziv eof() vraća 1 kad se dostigne kraj datoteke. Koristimo za određivanje da li je datoteka pridružena objektu uldat1 u potpunosti pročitana, npr. : uldat1.eof(); kraj učitavanja grupe podataka može označavati i posebna varijabla (tzv. sentinel) sa nekom posebnom predefiniranom vrijednošću (npr. -1) različitom od drugih podataka (čitanje se vrši sa npr. do-while petljom) Napomene Za fleksibilniji program maksimalna duljina polja obično se definira kao const (simbolička konstanta), koja mora biti poznata prije deklaracije polja, npr. sa const int N=10; double b[N]; Navede li se preveliki ili negativni indeks, prevoditelj neće javiti pogrešku i pristupit će se memorijskoj adresi koja je izvan područja rezerviranog za polje Množenjem broja članova u deklaraciji sa količinom memorije za svaki član, možemo odrediti količinu memorije rezerviranu deklaracijom polja Kod rada sa funkcijama za prijenos adresa u listi argumenata, umjesto zagrada, može se koristiti pokazivač * (obično se koristi kod rada sa poljima znakovnog tipa)