Längden på en array i C hänvisar till antalet element i arrayen. Det ska anges vid deklarationstillfället. Det är också känt som storleken på en array som används för att bestämma det minne som krävs för att lagra alla dess element. I programmeringsspråket C har vi ingen fördefinierad funktion för att hitta längden på arrayen men vi kan manuellt bestämma den genom att använda olika metoder som nämns nedan:
- Använda sizeof() Operator Använda pekare Aritmetik Använda Loop
1. Använda sizeof() Operator
Sizeof-operatorn är en unäroperator för kompileringstid som beräknar storleken på variablerna och datatyperna. Den returnerar ett heltalsvärde som representerar storleken på uttrycket eller en variabel i byte. Operatorns storlek används främst för dynamisk minnesallokering men den kan också användas för att hitta längden på en array.
Tricket är att först hitta storleken på hela arrayen i byte och storleken på ett enskilt element med hjälp av sizeof-operatorn och sedan dividera storleken på hela arrayen med storleken på ett enda element så att vi kan få antalet element i arrayen.
Syntax:
data_type size = sizeof(Array_name) / sizeof(Array_name[index]);>
I ovanstående syntax,
- data_type: Det är den typ av variabel i vilken vi vill lagra längden på arrayen.(som int, size_t, etc.). Array_name: Det är namnet på arrayen du vill hitta storleken på. sizeof(Array_name): It är en operator som returnerar storleken på hela arrayen i byte. sizeof(Array_name[index]): Den returnerar storleken på ett enskilt element i arrayen i byte. index: Det är indexet för alla element i arrayen.
Exempel:
C
binary tree postorder traversal
// 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;> }> |
>
>Produktion
The length of the array is: 5>
Tidskomplexitet: O(1) eftersom endast konstanttidsoperationer har utförts.
Utrymmes komplexitet: O(1) eftersom inget extra utrymme har använts.
2. Använda Pointer Arithmetic
Vi kan också beräkna längden på en matris i C med hjälp av pekaritmetik. Denna lösning med att använda en pekare är bara ett hack som används för att hitta antalet element i en array.
Syntax:
data_type length = *(&arr + 1) - arr;>
I ovanstående syntax:
- &arr: Pekare till en array av element. (&arr + 1): Minnesadress före arrayen eftersom pekaretyp är en pekare till en array av heltal. *(&arr + 1) – arr: Inkluderande skillnad mellan början och slutet av arrayen
Exempel:
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;> }> |
powershell multiline kommentar
>
>Produktion
Number of elements in Arr[] is: 6>
3. Använda Loop
Slingmetoden används för att beräkna längden på en array i C. Den itererar genom alla element i en array och ökar antalet.
Exempel:
sql välj från flera tabeller
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> |
>
>Produktion
Length of Array is: 10>
Tidskomplexitet: O(n) där n är antalet element i arrayen.
Utrymmes komplexitet: O(1) eftersom inget extra utrymme har använts.
Notera: Observera att dessa metoder endast fungerar när arrayen deklareras i samma omfång. Dessa metoder kommer att misslyckas om vi provar dem på en array som skickas som en pekare. Detta händer på grund av Array Decay.
De iterativa metoderna för att hitta längden på strängarna (array av tecken) kan inte heller tillämpas på arrayen av andra typer eftersom det inte finns någon slutindikator i dessa arraytyper i motsats till ' ' NULL tecken som markerar slutet på strängen.