Arrays maken het mogelijk om een reeks gerelateerde gegevens in C op te slaan zonder dat er meerdere variabelen hoeven te worden aangemaakt. In de regel zijn arrays eendimensionaal, maar ze kunnen worden uitgebreid tot een willekeurig aantal dimensies. We laten u zien hoe u 2D-arrays in C kunt maken en hoe u deze effectief kunt gebruiken.

Wat zijn de basisprincipes van het maken van arrays in C?

Om 2D-arrays in C te kunnen maken en beheersen, moet u de basisprincipes van deze structuur in de programmeertaal C kennen.

Net als in veel andere talen zijn arrays in C een geheugenblok waarin meerdere waarden van hetzelfde gegevenstype kunnen worden opgeslagen. Hierdoor kunnen meerdere waarden worden opgeslagen en gecombineerd onder één variabelenaam. De grootte van de array moet bekend zijn op het moment van compileren en kan daarna niet meer worden gewijzigd. Het volgende codeblok illustreert hoe arrays in C kunnen worden gemaakt:

int numbers1[15];
// Optionally, the saved values can be specified when they are created:
int numbers2[5] = {1, 2, 3, 4, 5};
c

Het gegevenstype wordt voor de variabelenaam gespecificeerd. In dit voorbeeld geven de vierkante haken aan dat deze variabele geen enkele waarde is, maar een array. Het gehele getal tussen de haken geeft aan hoeveel elementen van dit gegevenstype in de array kunnen worden opgeslagen. In het bovenstaande voorbeeld wordt de array number1 niet-geïnitialiseerd aangemaakt. Dit betekent dat er geen waarden in de velden zijn geschreven. Deze kunnen later in de code met waarden worden gevuld.

De array number2 wordt daarentegen handmatig geïnitialiseerd wanneer deze wordt aangemaakt. Deze aanpak is tijdrovend voor grotere arrays en de resulterende code is vaak onbegrijpelijk. In de meeste gevallen is dit dus niet de beste aanpak. Het is meestal beter om uw arrays programmatisch te vullen. U kunt dit bijvoorbeeld doen met een for-lus:

int numbers3[100];
for(int i = 0; i < 100; i++) {
numbers3[i] = i + 1;
}
// Creates an array containing the integers 1 to 100.
c
Tip

Afhankelijk van het besturingssysteem dat u gebruikt, de C-standaard die u gebruikt en waar u een niet-geïnitialiseerde variabele in uw programma hebt gedeclareerd, kan deze variabele een willekeurige waarde bevatten. Dit geldt ook voor arrayvelden. Daarom kunt u het beste geen velden openen die u nog niet hebt geïnitialiseerd, vooral als de waarde die erin is opgeslagen, wordt geïnterpreteerd als een pointer.

Zodra een array is aangemaakt, kunt u de index ervan gebruiken om toegang te krijgen tot afzonderlijke waarden. Het is belangrijk om te weten dat arrays beginnen met index 0. Het onderstaande voorbeeld laat dit zien:

int numbers2[5] = {1, 2, 3, 4, 5};
numbers2[3] = numbers2[2];
printf("%d\n", numbers2[3]);
// Output: 3
c

Een 2D-array kan in C worden uitgevoerd door een array te maken waarin elk veld een andere array bevat. In het volgende gedeelte vindt u meer informatie over 2D-arrays.

Hoe maak je 2D-arrays in C

2D-arrays in C zijn eigenlijk gewoon eendimensionale arrays. Elk veld bevat gewoon een andere array. Een 2D-array kan worden gezien als een tabel of matrix met waarden. 2D-arrays kunnen worden aangemaakt en gevuld met de volgende syntaxis:

ints_two_dimensions[10][10];
ints_two_dimensions [0][1] = 0;
ints_two_dimensions [2][1] = 2;
ints_two_dimensions [9][4] = 36;
// etc.
c

Hier staat het getal tussen de linkerhaakjes voor de index die in de eerste array moet worden opgehaald. Het getal rechts staat voor de index in de tweede array. Je kunt deze twee getallen zien als 2D-coördinaten, of rij- of kolomnummers. Net als eendimensionale arrays kunnen ook tweedimensionale arrays bij het aanmaken worden geïnitialiseerd met waarden.

floats_two_dimensions[2][6] = {
{0.1, 3.56, 6.346, 8.9, 45.345, 2.284},
{7.0, 1.12, 9.74, 0.0, 3.56, 4.4}
}
c

Het principe van een array binnen een andere array is niet beperkt tot twee dimensies. U kunt deze methode gebruiken om arrays met een willekeurig aantal dimensies te maken.

int ints_four_dimensions[10][10][10][10];
c

Hoe je 2D-arrays kunt gebruiken in C

Herhaal over een 2D-array

2D-arrays in C (of multidimensionale arrays) worden meestal gebruikt om multidimensionale gegevensstructuren te maken. In het volgende voorbeeld wordt een tweedimensionale array afwisselend gevuld met nullen en enen om een schaakbord weer te geven:

#include <stdio.h>
#define ARRAY_LENGTH 8
int main() {
    int chessboard[8][8];
    for(int i = 0; i < ARRAY_LENGTH; i++) {
        for(int j = 0; j < ARRAY_LENGTH; j++) {
            chessboard[i][j] = (i + j) % 2;
            printf("%d", chessboard[i][j]);
        }
        printf("\n");
    }
    return 0;
}
/*
Output:
01010101
10101010
01010101
10101010
01010101
10101010
01010101
10101010
*/
c

String-arrays

Als u arrays vakkundig wilt gebruiken, is het belangrijk om in gedachten te houden dat een array slechts een verwijzing is naar een locatie in het geheugen en dat dit ook de manier is waarop de C-compiler het begrijpt. De index die wordt opgegeven bij het schrijven naar of lezen van afzonderlijke velden vertegenwoordigt de verschuiving langs de array ten opzichte van het basisadres. Laten we eens kijken naar het volgende voorbeeld om een beter beeld te krijgen:

#include <stdio.h>
int main() {
int number2[5] = {1, 2, 3, 4, 5};
printf("%d\n", *number2);
// Output: 1
printf("%d\n", *(number2 + 2));
// Output: 3
}
c

Strings worden op dezelfde manier behandeld in C. Het is mogelijk om een string te doorlopen alsof het een array is. Dit is te zien in het volgende voorbeeld, waarin drie records die zijn opgeslagen in een array, teken voor teken in hoofdletters worden geschreven. Om toegang te krijgen tot tekens, wordt het array-indexveld (vierkante haken) gebruikt:

#include <stdio.h>
int main() {
    char* sentences[3];
    sentences[0] = "Hello, this is the first sentence.\n";
    sentences[1] = "This is the second sentence.\n";
    sentences[2] = "And now there are three.\n";
    printf("Original sentences:\n\n");
    for(int i = 0; i < 3; i++) {
        printf("%s", sentences[i]);
    }
    printf("\nChanged sentences:\n\n");
    for(int i = 0; i < 3; i++) {
        int j = 0;
        while(sentences[i][j] != '\n') {
            if(sentences[i][j] >= 'a' && sentences[i][j] <= 'z') {
                printf("%c", sentences[i][j] - 0x20);
            } else {
                printf("%c", sentences[i][j]);
            }
            j++;
        }
        printf("\n");
    }
}
/*
Output:
Original sentences:
Hello, this is the first sentence.
This is the second sentence.
And now there are three.
Changed sentences:
HELLO, THIS IS THE FIRST SENTENCE.
THIS IS THE SECOND SENTENCE.
AND NOW THERE ARE THREE.
*/
c
Ga naar hoofdmenu