Dĺžka poľa v C odkazuje na počet prvkov v poli. Musí byť špecifikovaný v čase vyhlásenia. Je tiež známa ako veľkosť poľa, ktorá sa používa na určenie pamäte potrebnej na uloženie všetkých jeho prvkov. V programovacom jazyku C nemáme žiadnu preddefinovanú funkciu na nájdenie dĺžky poľa, ale môžeme ju určiť manuálne pomocou rôznych metód uvedených nižšie:
- Pomocou operátora sizeof() pomocou aritmetiky ukazovateľa pomocou slučky
1. Použitie operátora sizeof().
Operátor sizeof je unárny operátor v čase kompilácie, ktorý vypočítava veľkosť premenných a dátových typov. Vráti celočíselnú hodnotu, ktorá predstavuje veľkosť výrazu alebo premennej v bajtoch. Operátor sizeof sa primárne používa na dynamickú alokáciu pamäte, ale dá sa použiť aj na zistenie dĺžky poľa.
Trik je najprv nájsť veľkosť celého poľa v bajtoch a veľkosť jedného prvku pomocou operátora sizeof a potom vydeliť veľkosť celého poľa veľkosťou jedného prvku, aby sme získali počet prvkov. v poli.
Syntax:
data_type size = sizeof(Array_name) / sizeof(Array_name[index]);>
Vo vyššie uvedenej syntaxi
- data_type: Je to typ premennej, do ktorej chceme uložiť dĺžku poľa. (ako int, size_t atď.). Array_name: Je to názov poľa, ktorého veľkosť chcete zistiť. sizeof(názov_pola): It je operátor, ktorý vracia veľkosť celého poľa v bajtoch. sizeof(názov_pola[index]): Vráti veľkosť jedného prvku v poli v bajtoch. index: Je to index akéhokoľvek prvku v poli.
Príklad:
C
dfs vs bfs
// 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;> }> |
>
>Výkon
The length of the array is: 5>
Časová zložitosť: O(1), pretože boli vykonané iba operácie s konštantným časom.
Priestorová zložitosť: O(1), pretože nebolo použité žiadne miesto navyše.
2. Použitie aritmetiky ukazovateľa
Môžeme tiež vypočítať dĺžku poľa v C pomocou aritmetiky ukazovateľa. Toto riešenie použitia ukazovateľa je len hack, ktorý sa používa na nájdenie počtu prvkov v poli.
Syntax:
data_type length = *(&arr + 1) - arr;>
Vo vyššie uvedenej syntaxi:
- &arr: Ukazovateľ na pole prvkov. (&arr + 1): Adresa pamäte pred poľom, pretože typ ukazovateľa je ukazovateľ na pole celých čísel. *(&arr + 1) – arr: Vrátane rozdielu medzi začiatkom a koncom poľa
Príklad:
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;> }> |
>
čo je oracle
>Výkon
Number of elements in Arr[] is: 6>
3. Použitie slučky
Metóda cyklu sa používa na výpočet dĺžky poľa v C. Iteruje cez všetky prvky poľa a zvyšuje počet.
Príklad:
C
char + int v jazyku Java
// 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> |
>
>Výkon
Length of Array is: 10>
Časová zložitosť: O(n) kde n je počet prvkov v poli.
Priestorová zložitosť: O(1), pretože nebolo použité žiadne miesto navyše.
Poznámka: Upozorňujeme, že tieto metódy fungujú iba vtedy, keď je pole deklarované v rovnakom rozsahu. Tieto metódy zlyhajú, ak ich vyskúšame na poli, ktoré sa odovzdáva ako ukazovateľ. To sa deje v dôsledku Array Decay.
Iteračné metódy zisťovania dĺžky reťazcov (súbor znakov) sa tiež nedajú použiť na pole iných typov, pretože v týchto typoch polí neexistuje indikátor konca na rozdiel od „ “ NULL znak označujúci koniec reťazca.