Declararea matricelor

Ca orice vector, o matrice trebuie declarată înainte de a fi folosită. Declararea îi rezervă în memorie un număr fix de locații și stabilește tipul de dată al elementelor, pe două dimensiuni: linii și coloane.

Sintaxa declarării

Forma generală a declarării unei matrice este:

tip_data nume_matrice[nr_linii][nr_coloane];

Componentele sunt:

  • tip_data: tipul comun al tuturor elementelor (int, float, char etc.);
  • nume_matrice: numele prin care ne referim la matrice și la elementele ei;
  • nr_linii și nr_coloane: numărul maxim de linii, respectiv de coloane.

Observăm că, față de vector, apare o a doua pereche de paranteze pătrate, câte una pentru fiecare dimensiune. Iată câteva exemple:

int a[101][201], n, m; // o matrice de intregi, plus doua variabile
float x[10][10];       // o matrice patratica de numere reale
short f[2][100];

Ca și la vectori, o matrice declarată global conține valoarea 0 pe toate pozițiile, în timp ce una declarată local conține inițial valori reziduale, aleatorii.

Referirea la un element

Pentru a folosi un element al matricei scriem a[i][j], unde primul indice, i, reprezintă linia, iar al doilea, j, reprezintă coloana. Ordinea contează: a[2][5] este elementul de pe linia 2 și coloana 5, complet diferit de a[5][2].

Ca și la vectori, numerotarea începe de la 0: într-o matrice cu n linii și m coloane, indicii de linie merg de la 0 la n-1, iar cei de coloană de la 0 la m-1.


Publicitate

Declararea cu valori implicite

La fel ca un vector, o matrice poate fi declarată direct cu valorile completate. Avem două forme echivalente.

1. Pe linii, folosind acolade imbricate. Fiecare grup de acolade reprezintă o linie:

int a[2][3] = { {1, 2, 3}, {4, 5, 6} };

Aici matricea are 2 linii și 3 coloane: prima linie este 1 2 3, a doua 4 5 6. Această formă este cea mai clară, pentru că structura din cod seamănă cu structura matricei.

2. Ca o listă simplă de valori. Elementele se completează linie cu linie, în ordine, sub o singură pereche de acolade:

int a[2][3] = { 1, 2, 3, 4, 5, 6 };

Compilatorul așază valorile în ordine, umplând mai întâi prima linie, apoi a doua și așa mai departe. Cele două declarări de mai sus produc exact aceeași matrice.

Dacă scriem mai puține valori decât încap (mai puține de nr_linii * nr_coloane), pozițiile rămase sunt completate automat cu 0.