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;
}
c

Resultatet er:

Total size of the array: 20 bytes
Size of a single element: 4 bytes
Number of elements in the array: 5
c

Pekearitmetikk

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 matrisen arr med 1. Siden arr er en matrise, betyr dette at pekeren vil peke til neste påfølgende matrise som er av samme type som arr.

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;
}
c

Utdata:

Number of elements in the array: 5
c

For-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;
}
c

Utdata:

Number of elements in the array: 8
c
Go to Main Menu