Linux C Programmieranleitung Teil 24 – Mehrdimensionale Arrays

Wenn Sie diese laufende C-Programmier-Tutorialserie verfolgen, kennen Sie das Konzept der Arrays. Zur schnellen Aktualisierung werden Arrays verwendet, um mehrere Werte desselben Typs in einem kontinuierlichen Speicher zu speichern.

Mehrdimensionale Anordnungen in C

Zum Beispiel ist das folgende ein Integer-Array, das 5 Zahlen speichern kann.

int arr[5]

Auf jeden in einem Array gespeicherten Wert kann einfach über den Array-Namen und den entsprechenden Indexwert zugegriffen werden. Da Indizes bei 0 beginnen, sagen wir, wenn man auf das zweite Element in einem Array zugreifen möchte, kann man das auf folgende Weise tun:

arr[1]

Das folgende Programm akzeptiert 5 Ganzzahlen vom Benutzer als Eingabe, speichert sie in einem Array und gibt sie dann an den Benutzer zurück.

#include <stdio.h>
int main()
{
int arr[5],i;

printf("Enter 5 integer values\n");

for(i=0;i<5;i++)
scanf("%d",&(arr[i]));

printf("You entered the following values:\n");

for(i=0;i<5;i++)
printf("%d\n",arr[i]);

return 0;
}

Nun, diese Art von Array ist als ein eindimensionales Array bekannt. Ja, das heißt, es gibt auch mehrdimensionale Arrays – zweidimensionale Arrays, dreidimensionale Arrays und so weiter. Zum Beispiel ist das folgende ein zweidimensionales Array:

int arr[2][3]

Sie können sich dieses Array als eine 2-D-Zahlentabelle mit 2 Zeilen und 3 Spalten vorstellen – etwa wie folgt:

x x x
x x x

Es gibt also insgesamt 6 Elemente, die dieses Array aufnehmen kann. Es ist erwähnenswert, dass die Gesamtzahl der Elemente, die ein Array enthalten kann, einfach durch Multiplikation der Indizes in der Deklaration des Arrays berechnet werden kann. Zum Beispiel kann im Falle von ‚arr‘ die Kapazität des Arrays durch 2×3 berechnet werden, was gleich 6 ist.

Im Initialisierungsteil kann ein 2D-Array wie ‚arr‘ auf folgende Weise initialisiert werden:

int arr [2][3] = {1,2,3,4,5,6}

Da diese obige Initialisierung es schwierig macht, diese Werte in einem 2D-Array zu visualisieren, gibt es eine andere (lies: bessere) Möglichkeit, die man wählen kann. Hier ist es:

int arr [2][3] = { {1,2,3}, {4,5,6} };

Nun ist es also leicht zu visualisieren, dass die Zahlen 1,2,3 in einer Reihe stehen, während 4,5,6 in der anderen Reihe stehen. Bitte schön:

1 2 3
4 5 6

Was den Umgang mit einem 2D-Array in C betrifft, so folgt ein kleines Programm, das diese 6 Werte vom Benutzer akzeptiert, sie in einem 2D-Array ‚arr‘ speichert und sie schließlich wieder an den Benutzer ausgibt:

#include <stdio.h>
int main()
{
int arr[2][3],i,j;

printf("You are about to enter values for a 2x3 array\n");

for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
printf("\n Enter value to be stored at row %d and column %d :: ",i,j);
scanf("%d",&arr[i][j]);
}
}

printf("\n You entered the following values:\n");

for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
printf("\n Row %d and column %d = %d\n",i,j,arr[i][j]);
}
}

return 0;
}

Und hier ist der Ausgang:

You are about to enter values for a 2x3 array
Enter value to be stored at row 0 and column 0 :: 1

Enter value to be stored at row 0 and column 1 :: 2

Enter value to be stored at row 0 and column 2 :: 3

Enter value to be stored at row 1 and column 0 :: 4

Enter value to be stored at row 1 and column 1 :: 5

Enter value to be stored at row 1 and column 2 :: 6

You entered the following values:

Row 0 and column 0 = 1

Row 0 and column 1 = 2

Row 0 and column 2 = 3

Row 1 and column 0 = 4

Row 1 and column 1 = 5

Row 1 and column 2 = 6

Das waren also einige grundlegende Informationen über zweidimensionale Arrays. Was ist mit 3-D-Arrays? Nun, auf den gleichen Linien können Sie auch dreidimensionale Arrays definieren und initialisieren. Hier ist ein Beispiel:

int arr[2][3][4]

Wie würde man also dieses Array visualisieren? Nun, denken Sie an eine dreidimensionale Welt (die Welt, in der wir leben), und dann visualisieren Sie drei Dimensionen, die senkrecht zueinander stehen. So passen die drei Dimensionen dieses Arrays zusammen.

Mit einer Kapazität von 24 Elementen (2x3x4) kann dieses Array wie folgt initialisiert werden:

int x[2][3][4] = 
 { 
   { {1,2,3,4}, {5,6,7,8}, {9,10,11,12} },
   { {13,14,15,16}, {17,18,19,20}, {21,22,23,24} }
 };

Und hier ist ein C-Programm, das ein 3-D-Array benutzt:

#include <stdio.h>
int main()
{
int arr[2][3][4],i,j,k;

printf("You are about to enter values for a 2x3x4 array\n");

for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
for(k=0;k<4;k++)
{
printf("\n Enter value to be stored at arr[%d][%d][%d] :: ",i,j,k);
scanf("%d",&arr[i][j][k]);
}
}
}

printf("\n You entered the following values:\n");

for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
for(k=0;k<4;k++)
{
printf("\n arr[%d][%d][%d] = %d\n",i,j,k,arr[i][j][k]);
}
}
}

return 0;
}

Fazit

In diesem Tutorial haben wir unser bestehendes Verständnis von Arrays erweitert, indem wir das Konzept der mehrdimensionalen Arrays diskutieren. Es wird empfohlen, die in diesem Tutorial verwendeten Beispiele auf Ihrem System auszuprobieren (sowie neue zu erstellen), um ein besseres Verständnis für die Funktionsweise dieser Arrays zu erhalten. Im Zweifelsfall oder bei Rückfragen hinterlassen Sie bitte einen Kommentar.

Das könnte Dich auch interessieren …