Je kunt de lengte van arrays in C op verschillende manieren betrouwbaar bepalen. Hierdoor wordt het eenvoudiger om arrays dynamisch te beheren en aan te passen aan veranderingen in grootte.

Wat is de lengte van een array in C en welke methoden zijn er om deze te meten?

Wanneer u de lengte van een array in C meet, meet u het aantal elementen dat de array bevat. Deze informatie is cruciaal voor het benaderen van individuele elementen in de array, het doorlopen ervan of het uitvoeren van bewerkingen. Wanneer u een array in C declareert, wordt het geheugen voor de elementen in de array aaneengesloten (d.w.z. op een sequentiële manier zonder hiaten) in het RAM toegewezen. In C is er geen ingebouwde functie om de lengte van een array te bepalen, dus moet je dit handmatig doen.

De meest voorkomende methoden zijn:

  • sizeof()
  • Pointer-rekenkunde
  • Lussen

sizeof()

sizeof()een operator in C. Deze bepaalt tijdens het compileren de grootte van een gegevenstype of een variabele in bytes. Het retourtype van de sizeof is size_t, een unsigned integer-type dat de grootte in bytes weergeeft. In C kunt u ook de sizeof() gebruiken om de lengte van arrays te berekenen.

Syntaxis

Om het aantal elementen in een array te bepalen, moet u de totale grootte van de array delen door de grootte van een enkel element.

data_type arrayLength = sizeof(array_name) / sizeof(array_name[index]);
c
  • data_type: Dit is het gegevenstype waarin de lengte van de array wordt opgeslagen.
  • array_name: Geeft de naam van de array op.
  • sizeof(array_name): Deze expressie geeft de totale grootte van de array in bytes weer.
  • sizeof(array_name[index]): Door de totale grootte van de array te delen door de grootte van een enkel element, krijgt u het aantal elementen in de array.
  • index: Dit vertegenwoordigt de index van een element in de array.

Voorbeeld

In dit voorbeeld gebruiken we sizeof() om de grootte van de array myArray en de grootte van een enkel element te bepalen. Met deze informatie kunnen we vervolgens het aantal elementen in de array berekenen door de totale grootte te delen door de grootte van een enkel element. We gaan de grootte van het element en de array in bytes meten.

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

De uitvoer is:

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

Pointer-rekenkunde

Pointers zelf bevatten geen informatie over de grootte of lengte van een array. We kunnen echter pointer-rekenkunde gebruiken in combinatie met de adressen van array-elementen om de lengte van de C-array te bepalen.

Syntaxis

data_type arr_length = *(&arr + 1) - arr;
c
  • &arr: Hiermee wordt een pointer gemaakt die naar een volledige array van elementen verwijst.
  • (&arr + 1): Hier wordt de pointer die naar de array arr verwijst met 1 verhoogd. Aangezien arr een array is, betekent dit dat de pointer naar de volgende opeenvolgende array van hetzelfde type als arr zal verwijzen.

Voorbeeld

De uitdrukking *(&arr + 1) - arr berekent het verschil tussen de pointer die naar de volgende array &arr + 1 verwijst en de pointer die naar het eerste element van de oorspronkelijke array verwijst. In dit geval is het ‘volgende’ geheugengebied het einde van de eerste array. Het resulterende verschil is gelijk aan het aantal elementen in de array.

#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

Uitvoer:

Number of elements in the array: 5
c

For-lussen

Een andere methode om de lengte van een array in C te bepalen, is door gebruik te maken van een for-lus. Bij deze aanpak wordt de array doorlopen en wordt het aantal elementen geteld dat deze bevat. Om deze techniek te kunnen gebruiken, moet de array waarvan u de lengte wilt bepalen zich in hetzelfde codegebied bevinden als de for-lus die u gebruikt om de lengte te bepalen.

Voorbeeld

Hier verhoogt de lus de teller arrayLength voor elk element dat wordt doorgegeven. De voorwaarde i < sizeof(arr) / sizeof(arr[0]) zorgt ervoor dat de lus alleen wordt uitgevoerd als er elementen in de array staan.

#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

Uitvoer:

Number of elements in the array: 8
c
Ga naar hoofdmenu