Ce este o matrice

Array - un complex (compozit structurat) tipul de date, care se caracterizează după cum urmează:

· Elementele de matrice sunt de același tip, spre deosebire de structurile, astfel încât fiecare element de matrice ocupă aceeași cantitate de memorie;







· Array localizat în memoria RAM, în loc de dispozitivul extern, sub formă de fișiere (2-a sesiune);

· Elemente de matrice ocupă celulele învecinate, în contrast, de exemplu, din liste (sesiunea a 2).

Accesul la elementele unei matrice în C ++ se face în două moduri.

În primul rând, prin utilizarea numărul de serie al elementului de matrice, care se numește indicele. tipic pentru mai multe limbaje de programare și este considerat primul semestru. Este mai simplu și familiar celor care au studiat limbajul Pascal. B, incluzând o variabilă constantă sau poate fi utilizată sau exprimarea unui tip compatibil cu ele ca index. Indicele nu poate fi folosit ca o expresie de tip reale.

Matricele pot avea una sau mai multe dimensiuni. În această secțiune considerăm matrice unidimensională, care este uneori numit un vector, adică un vector în spațiu n-dimensional. Lucrul cu matrici bidimensionale (matrici) este considerată în cap. 5. Trei sau mai multe dimensiuni, în practică, sunt rareori folosite, deoarece astfel de matrice ocupa o cantitate mare de memorie RAM.

În cele ce urmează, cuvântul „matrice“, ne referim la matrice unidimensională.

În ceea ce privește timpul (fază) când memoria este alocată pentru matrice, există două tipuri de ele. Memorie pentru o gamă dinamică este alocată în timpul rulării, iar în cazul în care nu este nevoie de matrice, memoria poate fi eliberată la el. Astfel de matrice sunt luate în considerare în semestrul al doilea.

Un tablou unidimensional cu o dimensiune fixă ​​(o numesc statică) este declarată într-o formă generală, după cum urmează:

Aici, tipul - tipul de elemente din matrice. Inițial, vom lua în considerare tipurile simple (int, float, char), dar puteți utiliza complex, cum ar fi structura. Numele scris pe regulile de identificatori. Fiecare element al matrice are același nume, singurul cod de schimbare sau element numărul. N - dimensiunea (sau mărime) a matrice ca un întreg constant sau o expresie constantă. Această valoare determină numărul de celule de memorie RAM rezervate pentru matrice. De exemplu:







float A [10]; sau const n = 10; float A [n];

Spre deosebire de matrice dinamică pentru memorie statică în timpul compilării este rezervat pentru a găzdui spus N numere de tip (10) numere reale. Pentru o serie de memorie necesară volum k * N bytes (4 * 10), unde k - numărul de octeți necesari pentru a găzdui un element de acest tip (unul tip float). Această memorie se păstrează pe durata programului, sau mai degrabă, o funcție sau bloc, care descrie matrice. Software-ul capacitate de memorie necesară este determinată folosind operația sizeof, după cum urmează:

M = sizeof (tip) * N; sau M = sizeof (nume); sau M = nume sizeof;

unde M - variabila număr întreg, care determină mărimea șirului în octeți. Tip neapărat scrise între paranteze, iar numele poate fi fără paranteze. Următorul program afișează de două ori numărul de 40.

float A [10]; int M1, M2;

M1 = sizeof (float) * 10; // dar M1 = plutească sizeof * 10 - Eroare!

M2 = sizeof (A); // sau M2 = sizeof A;

În multe sisteme moderne de programare, inclusiv C ++, numerotarea elementelor din matrice începe cu 0. Apoi, o [n-1] - ultimul element al matrice. Acest lucru implică utilizarea indicii atunci când se ocupă cu matrice (vezi. Al 2-lea sesiune). Prin urmare, în acest exemplu, indicele variază de la 0 la 9, inclusiv, adică, indicele ultimului element de matrice este una mai mică decât dimensiunea sa. Anunțat 10 elemente de matrice sunt identificate după cum urmează: A [0], A [1], A [2], ..., A [9]. In C ++, nu există nici o limită verificare matrice. Este posibil să se meargă dincolo de frontierele sale, și scrie valoarea într-o variabilă, sau chiar și în codul de program. Un astfel de control ar trebui să aibă grijă de programator.

Dacă utilizați matrice statice au probleme în cazul în care dimensiunea matrice în avans, noi nu știm. În acest caz, vom declara o serie de dimensiuni maxime, care este în general cunoscută. Dimensiunea reală și de a introduce utilizarea în continuare, de exemplu, în cicluri, precum și pentru alte scopuri:

nmax const = 100; float X [nmax];

int n; cout<<”Input the size of array ”; cin>> N;

/ * D alshoy de lucru cu n (mai degrabă decât de la nmax) ale elementelor de matrice, de exemplu, să le introducă. * /

pentru (int i = 0; i

// Această linie poate fi coborâtă împreună cu bretele.

O astfel de metodă este mai ușor, dar este ineficient punctul de alocare de memorie de vedere, ca „cărți“ mai multă memorie decât utilizarea reală. În astfel de cazuri, utilizate profesional matricele dinamice mai eficiente (a se vedea. Al 2-lea sesiune).