Cum Se Determină Dimensiunea Unui Tablou

Cuprins:

Cum Se Determină Dimensiunea Unui Tablou
Cum Se Determină Dimensiunea Unui Tablou

Video: Cum Se Determină Dimensiunea Unui Tablou

Video: Cum Se Determină Dimensiunea Unui Tablou
Video: CUM IMPACHETEZ TABLOURILE SI COMENZILE 2024, Mai
Anonim

Tablourile sunt una dintre cele mai frecvent utilizate forme de stocare a datelor în timpul operațiunii programului. Acestea vă permit să organizați elemente de același tip într-o secvență ordonată și să obțineți acces rapid la ele prin index. Foarte des, atunci când dezvoltați aplicații în limbaje de programare puternice și flexibile care permit accesul direct la memorie, cum ar fi C ++, trebuie să determinați dimensiunea matricei.

Cum se determină dimensiunea unui tablou
Cum se determină dimensiunea unui tablou

Necesar

Compilator C ++

Instrucțiuni

Pasul 1

Determinați dimensiunea matricei la momentul compilării, calculând-o folosind operatorul sizeof. Acest operator returnează cantitatea de memorie (în octeți) ocupată de argumentul transmis acestuia. Argumentul poate fi fie o variabilă, fie un identificator de tip. Mărimea operatorului returnează cantitatea finită de memorie ocupată de obiect în etapa de execuție a programului (luând în considerare, de exemplu, setările pentru alinierea câmpurilor de structură), dar calculul său se efectuează în etapa de compilare.

Pasul 2

Pentru a determina dimensiunea unui tablou utilizând operatorul sizeof, împărțiți întreaga sa dimensiune la dimensiunea unui element. De exemplu, dacă aveți următoarea definiție a unui tablou: int aTemp = {10, 20, 0xFFFF, -1, 16}, atunci dimensiunea sa poate fi calculată ca: int nSize = sizeof (aTemp) / sizeof (aTemp) [0]);

Pasul 3

Pentru o utilizare mai convenabilă a acestei metode, este logic să definiți o macro: #define countof (a) (sizeof (a) / sizeof (a [0])) Rețineți că, deoarece valoarea operatorului sizeof este calculată la compilare timp, în momentul în care se efectuează calculul, informațiile despre volumul matricei și elementele sale trebuie să fie disponibile în mod explicit. Cu alte cuvinte, este imposibil să se determine parametrii unei matrice de dimensiuni necunoscute prin declarația sa externă.

Pasul 4

Determinați dimensiunea matricei în timpul executării programului, utilizând semnul cunoscut al terminării acestuia. Una dintre abordările care permit stocarea și transmiterea datelor sub formă de matrice de lungime nedeterminată este alocarea unei valori speciale pentru un semn care indică finalizarea unei secvențe de date. De exemplu, șirurile de tip C cu un singur octet care sunt matrice de caractere trebuie să se termine cu o valoare de 0, matricile de șiruri C de lungime variabilă împachetate sunt terminate cu zero, iar matricile de pointer trebuie să fie terminate cu nul.

Pasul 5

Pentru a determina dimensiunea unui tablou reprezentat în acest mod, scanați-l element cu element până când găsiți elementul de terminare. Măriți contorul zero inițializat în timpul scanării. Sau, măriți valoarea indicatorului la un element de matrice și, după scanare, calculați diferența dintre pointerii către elementele curente și primele.

Pasul 6

Obțineți dimensiunea unui tablou dinamic reprezentat de un obiect cadru sau bibliotecă apelând metoda acestuia. Orice clase care încapsulează funcționalitatea unor astfel de matrice au metode pentru obținerea numărului actual de elemente. De exemplu, clasa șablon std:: vector a bibliotecii standard C ++ are o metodă de dimensiune, clasa QVector a cadrului Qt are o metodă de numărare, iar clasa CArray analogă a MFC are o metodă GetCount.

Recomandat: