Lungimea unei matrice în C se referă la numărul de elemente din matrice. Acesta trebuie specificat în momentul declarării. Este, de asemenea, cunoscută ca dimensiunea unei matrice care este utilizată pentru a determina memoria necesară pentru a stoca toate elementele sale. În limbajul de programare C, nu avem nicio funcție predefinită pentru a găsi lungimea matricei, dar o putem determina manual folosind diferite metode menționate mai jos:
- Utilizarea operatorului sizeof() Folosind aritmetica pointerului Folosind bucla
1. Utilizarea operatorului sizeof().
Operatorul sizeof este un operator unar în timp de compilare care calculează dimensiunea variabilelor și a tipurilor de date. Returnează o valoare întreagă care reprezintă dimensiunea expresiei sau o variabilă în octeți. Operatorul sizeof este folosit în primul rând pentru alocarea dinamică a memoriei, dar poate fi folosit și pentru a găsi lungimea unui tablou.
Trucul este să găsiți mai întâi dimensiunea întregii matrice în octeți și dimensiunea unui singur element folosind operatorul sizeof și apoi împărțiți dimensiunea întregii matrice la dimensiunea unui singur element, astfel încât să putem obține numărul de elemente în matrice.
Sintaxă:
data_type size = sizeof(Array_name) / sizeof(Array_name[index]);>
În sintaxa de mai sus,
- data_type: Este tipul de variabilă în care dorim să stocăm lungimea matricei (cum ar fi int, size_t etc.). Array_name: este numele matricei pentru care doriți să găsiți dimensiunea. sizeof(Nume_Matrice): It este un operator care returnează dimensiunea întregii matrice în octeți. sizeof(Array_name[index]): returnează dimensiunea unui singur element din matrice în octeți. index: este indexul oricărui element din matrice.
Exemplu:
C
java în timp ce starea
// C Program to calculate size of an array using sizeof()> // operator> #include> int> main()> {> >int> Arr[] = { 1, 2, 3, 4, 5 };> > >// variable to store size of Arr> >int> length =>sizeof>(Arr) />sizeof>(Arr[0]);> >printf>(>'The length of the array is: %d
'>, length);> >return> 0;> }> |
>
>Ieșire
The length of the array is: 5>
Complexitatea timpului: O(1) deoarece au fost efectuate numai operații în timp constant.
Complexitatea spațiului: O(1) deoarece nu a fost folosit spațiu suplimentar.
2. Folosind aritmetica pointerului
De asemenea, putem calcula lungimea unui tablou în C folosind aritmetica pointerului. Această soluție de utilizare a unui pointer este doar un hack care este folosit pentru a găsi numărul de elemente dintr-o matrice.
Sintaxă:
data_type length = *(&arr + 1) - arr;>
În sintaxa de mai sus:
- &arr: Indicator către o matrice de elemente. (&arr + 1): Adresa memoriei înaintea matricei, deoarece tipul de indicator este un pointer către o matrice de numere întregi. *(&arr + 1) – arr: diferență inclusiv între începutul și sfârșitul matricei
Exemplu:
C
// C Program to calculate size of an array using pointer arithmetic> #include> int> main()> {> >int> Arr[] = { 1, 2, 3, 4, 5, 6 };> >// variable to store the size of Arr> >int> length = *(&Arr + 1) - Arr;> >printf>(>'Number of elements in Arr[] is: %d'>, length);> >return> 0;> }> |
>
>
tăierea alfa betaIeșire
Number of elements in Arr[] is: 6>
3. Folosind Loop
Metoda buclei este folosită pentru a calcula lungimea unui tablou în C. Iterează prin toate elementele unui tablou și crește numărul.
Exemplu:
C
// C Program to calculate size of an array using loop> #include> > int> arr_length(>int> arr[])> {> >int> i;> >int> count = 0;> >for>(i=0; arr[i]!=>' '>; i++)> >{> >count++;> >}> >return> count;> }> > int> main()> {> >int> arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};> >int> n;> > >n = arr_length(arr);> >printf>(>'Length of Array is: %d'>, n);> > >return> 0;> }> // This code is contributed by Susobhan Akhuli> |
>
np.clip
>Ieșire
Length of Array is: 10>
Complexitatea timpului: O(n) unde n este numărul de elemente din matrice.
Complexitatea spațiului: O(1) deoarece nu a fost folosit spațiu suplimentar.
Notă: Vă rugăm să rețineți că aceste metode funcționează numai atunci când matricea este declarată în același domeniu. Aceste metode vor eșua dacă le încercăm pe o matrice care este transmisă ca pointer. Acest lucru se întâmplă din cauza Array Decay.
De asemenea, metodele iterative de găsire a lungimii șirurilor (matrice de caractere) nu pot fi aplicate și matricei altor tipuri, deoarece nu există un indicator de final în aceste tipuri de matrice, spre deosebire de „ ” NULL caracter care marchează sfârșitul șirului.