Hvordan bestemme lengden på en matrise i C
Du kan pålitelig bestemme lengden på matriser i C ved hjelp av ulike metoder. Dette gjør det enklere å administrere matriser dynamisk og tilpasse seg endringer i størrelse.
Hva er array-lengde i C, og hvilke metoder finnes det for å måle den?
Når du måler lengden på en matrise i C, måler du antall elementer matrisen inneholder. Denne informasjonen er avgjørende for å få tilgang til individuelle elementer i matrisen, gå gjennom den eller utføre manipulasjoner. Når du deklarerer en matrise i C, blir minnet for elementene i matrisen tildelt i RAM-minnet sammenhengende (dvs. på en sekvensiell måte uten mellomrom). I C finnes det ingen innebygd funksjon for å bestemme arrayens lengde, så du må bestemme den manuelt.
De vanligste metodene er:
sizeof()- Pekeraritmetikk
- Loops
sizeof()
sizeof()en operator i C. Den bestemmer størrelsen på en datatype eller en variabel i byte under kompilering. Returtypen til sizeof er size_t, en usignert heltallstype som representerer størrelsen i byte. I C kan du også bruke sizeof() til å beregne lengden på en matrise.
Syntaks
For å bestemme antall elementer i en matrise, må du dele den totale størrelsen på matrisen med størrelsen på et enkelt element.
data_type arrayLength = sizeof(array_name) / sizeof(array_name[index]);c- data_type: Dette er datatypen der lengden på matrisen vil bli lagret.
- array_name: Angir navnet på matrisen.
- sizeof(array_name): Denne uttrykkssetningen returnerer den totale størrelsen på matrisen i byte.
- sizeof(array_name[index]): Ved å dele den totale størrelsen på matrisen med størrelsen på et enkelt element, får du antall elementer i matrisen.
- index: Dette representerer indeksen til et element i matrisen.
Eksempel
I dette eksemplet skal vi bruke sizeof() til å bestemme størrelsen på matrisen myArray samt størrelsen på et enkelt element. Med denne informasjonen kan vi deretter beregne antall elementer i matrisen ved å dele den totale størrelsen med størrelsen på et enkelt element. Vi skal måle størrelsen på elementet og matrisen i byte.
int main() {
int myArray[] = {1, 2, 3, 4, 5};
size_t totalSize = sizeof(myArray);
size_t elementSize = sizeof(myArray[0]);
size_t arrayLength = totalSize / elementSize;
printf("Total size of the array: %d bytes\n", (int)totalSize);
printf("Size of a single element: %d bytes\n", (int)elementSize);
printf("Number of elements in the array: %d\n", (int)arrayLength);
return 0;
}cResultatet er:
Total size of the array: 20 bytes
Size of a single element: 4 bytes
Number of elements in the array: 5cPekearitmetikk
Pekere inneholder ikke informasjon om størrelsen eller lengden på en matrise. Vi kan imidlertid bruke pekeraritmetikk sammen med adressene til matriseelementene for å bestemme lengden på C-matrisen.
Syntaks
data_type arr_length = *(&arr + 1) - arr;c&arr: Dette oppretter en pekeren som peker til en hel matrise av elementer.(&arr + 1): Her økes pekeren som peker til matrisenarrmed 1. Sidenarrer en matrise, betyr dette at pekeren vil peke til neste påfølgende matrise som er av samme type somarr.
Eksempel
Uttrykket *(&arr + 1) - arr beregner forskjellen mellom pekeren som peker til neste array &arr + 1 og pekeren som peker til det første elementet i den opprinnelige arrayen. I dette tilfellet er det «neste» minneområdet slutten av den første arrayen. Den resulterende forskjellen er lik antall elementer i arrayen.
#include <stdio.h>
int main() {
int arr[] = {1, 2, 3, 4, 5};
int length = *(&arr + 1) - arr;
printf("Number of elements in the array: %d\n", length);
return 0;
}cUtdata:
Number of elements in the array: 5cFor-løkker
En annen metode for å bestemme lengden på en matrise i C er å bruke en for-løkke. Denne metoden innebærer å gå gjennom matrisen og telle antall elementer den inneholder. For å bruke denne teknikken må matrisen du ønsker å bestemme lengden på, være i samme kodeparti som for-løkken du bruker til å bestemme lengden.
Eksempel
Her øker løkken telleren arrayLength for hvert element som passerer gjennom. Betingelsen i < sizeof(arr) / sizeof(arr[0]) sikrer at løkken bare kjører hvis elementene er i matrisen.
#include <stdio.h>
int main() {
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8};
size_t arrayLength = 0;
for (size_t i = 0; i < sizeof(arr) / sizeof(arr[0]); ++i) {
arrayLength++;
}
printf("Number of elements in the array: %d\n", arrayLength);
return 0;
}cUtdata:
Number of elements in the array: 8c