Længden af et array i C refererer til antallet af elementer i arrayet. Det skal angives på deklarationstidspunktet. Det er også kendt som størrelsen af et array, der bruges til at bestemme den hukommelse, der kræves til at gemme alle dens elementer. I programmeringssprog C har vi ikke nogen foruddefineret funktion til at finde længden af arrayet, men vi kan manuelt bestemme det ved at bruge forskellige metoder nævnt nedenfor:
- Bruger sizeof() Operator Bruger Pointer Aritmetic Bruger Loop
1. Brug sizeof() Operator
Størrelsen af operatoren er en unær operator til kompileringstid, der beregner størrelsen af variablerne og datatyperne. Det returnerer en heltalsværdi, der repræsenterer størrelsen af udtrykket eller en variabel i bytes. Operatorens størrelse bruges primært til dynamisk hukommelsesallokering, men den kan også bruges til at finde længden af et array.
Tricket er først at finde størrelsen af hele arrayet i bytes og størrelsen af et enkelt element ved hjælp af sizeof-operatoren og derefter dividere størrelsen af hele arrayet med størrelsen af et enkelt element, så vi kan få antallet af elementer i rækken.
Syntaks:
data_type size = sizeof(Array_name) / sizeof(Array_name[index]);>
I ovenstående syntaks,
- data_type: Det er den type variabel, hvori vi ønsker at gemme længden af arrayet.(såsom int, size_t, osv.). Array_name: Det er navnet på det array, du vil finde størrelsen på. sizeof(Array_name): It er en operator, der returnerer størrelsen af hele arrayet i bytes. sizeof(Array_name[indeks]): Det returnerer størrelsen af et enkelt element i arrayet i bytes. indeks: Det er indekset for ethvert element i arrayet.
Eksempel:
C
statisk nøgleord i java
// 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>
Tidskompleksitet: O(1), da der kun er udført konstanttidsoperationer.
træ- og grafteori
Rumkompleksitet: O(1), da der ikke er brugt ekstra plads.
2. Brug af Pointer Aritmetic
Vi kan også beregne længden af et array i C ved hjælp af pointer-aritmetik. Denne løsning med at bruge en pointer er blot et hack, der bruges til at finde antallet af elementer i et array.
Syntaks:
data_type length = *(&arr + 1) - arr;>
I ovenstående syntaks:
- &arr: Marker til et array af elementer. (&arr + 1): Hukommelsesadresse foran arrayet, da pointertype er en pegepind til en matrix af heltal. *(&arr + 1) – arr: Inklusiv forskel mellem starten og slutningen af arrayet
Eksempel:
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;> }> |
>
>Produktion
Number of elements in Arr[] is: 6>
3. Brug af Loop
Sløjfemetoden bruges til at beregne længden af et array i C. Det itererer gennem alle elementerne i et array og øger antallet.
Eksempel:
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>
Tidskompleksitet: O(n) hvor n er antallet af elementer i arrayet.
Rumkompleksitet: O(1), da der ikke er brugt ekstra plads.
Bemærk: Bemærk venligst, at disse metoder kun virker, når arrayet er deklareret i samme omfang. Disse metoder vil mislykkes, hvis vi prøver dem på et array, der sendes som en pointer. Dette sker på grund af Array Decay.
De iterative metoder til at finde længden af strengene (array af tegn) kan heller ikke anvendes på rækken af andre typer, da der ikke er nogen slutindikator i disse matrixtyper i modsætning til ' ' NULL tegn, der markerer slutningen af strengen.
javafx tutorial