logo

Mehrdimensionale Arrays in C

Voraussetzung: Arrays in C

Ein mehrdimensionales Array kann als Array von Arrays bezeichnet werden, das homogene Daten in Tabellenform speichert. Daten in mehrdimensionalen Arrays werden im Allgemeinen in Zeilenreihenfolge im Speicher gespeichert.



Der allgemeine Form der Deklaration von N-dimensionalen Arrays ist unten dargestellt.

Syntax:

data_type array_name[size1][size2]....[sizeN];>
  • Datentyp : Art der Daten, die im Array gespeichert werden sollen.
  • array_name : Name des Arrays.
  • Größe1, Größe2,…, GrößeN : Größe jeder Dimension.

Beispiele :



Linkliste
  Two dimensional array:   int two_d[10][20];   Three dimensional array:   int three_d[10][20][30];>

Größe mehrdimensionaler Arrays:

Die Gesamtzahl der Elemente, die in einem mehrdimensionalen Array gespeichert werden können, kann durch Multiplikation der Größe aller Dimensionen berechnet werden.
Zum Beispiel:

  • Das Array int x[10][20] kann insgesamt (10*20) = 200 Elemente speichern.
  • Ähnliches Array int x[5][10][20] kann insgesamt (5*10*20) = 1000 Elemente speichern.

Um die Größe des Arrays in Bytes zu erhalten, multiplizieren wir die Größe eines einzelnen Elements mit der Gesamtzahl der Elemente im Array.
Zum Beispiel:

  • Größe des Arrays int x[10][20] = 10 * 20 * 4 = 800 Bytes. (wobei int = 4 Bytes)
  • Ebenso die Größe von int x[5][10][20] = 5 * 10 * 20 * 4 = 4000 Bytes. (wobei int = 4 Bytes)

Die am häufigsten verwendeten Formen des mehrdimensionalen Arrays sind:



  1. Zweidimensionales Array
  2. Dreidimensionales Array

Zweidimensionales Array in C

A zweidimensionales Array oder 2D-Array in C ist die einfachste Form des mehrdimensionalen Arrays. Wir können uns ein zweidimensionales Array als ein Array eindimensionaler Arrays vorstellen, die übereinander angeordnet sind und eine Tabelle mit „x“ Zeilen und „y“ Spalten bilden, wobei die Zeilennummer zwischen 0 und (x-1) und die Spaltennummer liegt reicht von 0 bis (y-1).

grafische Darstellung eines zweidimensionalen Arrays

Grafische Darstellung eines zweidimensionalen Arrays der Größe 3 x 3

Deklaration eines zweidimensionalen Arrays in C

Die Grundform der Deklaration eines 2D-Arrays mit X Reihen und Und Spalten in C ist unten dargestellt.

Syntax:

data_type array_name[x][y];>

Wo,

  • Datentyp: Art der Daten, die in jedem Element gespeichert werden sollen.
  • array_name: Name des Arrays
  • X: Anzahl der Reihen.
  • Und: Anzahl der Spalten.

Wir können ein zweidimensionales Integer-Array, sagen wir „x“, mit 10 Zeilen und 20 Spalten wie folgt deklarieren:

Beispiel:

int x[10][20];>

Hinweis: Bei dieser Art der Deklaration wird dem Array Speicher im Stapel zugewiesen und die Größe des Arrays sollte zum Zeitpunkt der Kompilierung bekannt sein, d. h. die Größe des Arrays ist festgelegt. Mit den genannten Methoden können wir in C auch dynamisch ein Array erstellen Hier.

Initialisierung zweidimensionaler Arrays in C

Die verschiedenen Möglichkeiten, wie ein 2D-Array initialisiert werden kann, sind wie folgt:

  1. Verwenden der Initialisierungsliste
  2. Schleifen verwenden

1. Initialisierung des 2D-Arrays mithilfe der Initialisierungsliste

Wir können ein 2D-Array in C initialisieren, indem wir eine Initialisierungsliste verwenden, wie im folgenden Beispiel gezeigt.

Erste Methode:

int x[3][4] = {0, 1 ,2 ,3 ,4 , 5 , 6 , 7 , 8 , 9 , 10 , 11}>

Das obige Array besteht aus 3 Zeilen und 4 Spalten. Die Elemente in den geschweiften Klammern von links nach rechts werden auch von links nach rechts in der Tabelle gespeichert. Die Elemente werden in der Reihenfolge in das Array eingefügt: Die ersten 4 Elemente von links werden in die erste Zeile eingefügt, die nächsten 4 Elemente in die zweite Zeile und so weiter.

Zweite Methode (besser) :

int x[3][4] = {{0,1,2,3}, {4,5,6,7}, {8,9,10,11}};>

Bei dieser Art der Initialisierung werden verschachtelte Klammern verwendet. Jeder Satz innerer Klammern repräsentiert eine Zeile. Im obigen Beispiel gibt es insgesamt drei Reihen, also drei Sätze innerer Klammern. Der Vorteil dieser Methode besteht darin, dass sie einfacher zu verstehen ist.

Hinweis: Die Anzahl der Elemente in der Initialisierungsliste sollte immer kleiner oder gleich der Gesamtzahl der Elemente im Array sein.

Wir können das Array auch deklarieren, ohne die Größe der Zeile zu definieren, wenn wir die Listeninitialisierung verwenden. Der Compiler leitet in diesem Fall automatisch die Größe des Arrays ab:

data_type array_name[][y] = {...} ;>

Es ist weiterhin obligatorisch, die Anzahl der Spalten festzulegen.

2. Initialisierung des 2D-Arrays mithilfe von Schleifen

Wir können eine beliebige C-Schleife verwenden, um jedes Mitglied eines 2D-Arrays einzeln zu initialisieren, wie im folgenden Beispiel gezeigt.

Beispiel:

int x[3][4]; for(int i = 0; i <3; i++){ for(int j = 0; j < 4; j++){ x[i][j] = i + j; } }>

Diese Methode ist nützlich, wenn die Werte jedes Elements in einer sequentiellen Beziehung stehen.

Zugriff auf Elemente zweidimensionaler Arrays in C

Auf Elemente in 2D-Arrays wird über Zeilenindizes und Spaltenindizes zugegriffen. Auf jedes Element in einem 2D-Array kann wie folgt verwiesen werden:

Syntax:

array_name[i][j]>

Wo,

  • ich: Der Zeilenindex.
  • J: Der Spaltenindex.

Beispiel:

int x[2][1];>

Das obige Beispiel stellt das Element dar, das in der dritten Zeile und der zweiten Spalte vorhanden ist.

Notiz : In Arrays, wenn die Größe eines Arrays N beträgt. Sein Index liegt zwischen 0 und N-1. Daher ist für Zeilenindex 2 die Zeilennummer 2+1 = 3. Um alle Elemente eines zweidimensionalen Arrays auszugeben, können wir verschachtelte for-Schleifen verwenden. Wir benötigen zwei „ für ‘ Schleifen. Eine zum Durchlaufen der Zeilen und eine andere zum Durchlaufen von Spalten.

Um das gesamte Array zu drucken, greifen wir mithilfe von Schleifen einzeln auf jedes Element zu. Die Durchlaufreihenfolge kann je nach Anforderung zeilen- oder spaltenorientiert sein. Das folgende Beispiel zeigt die zeilenorientierte Durchquerung eines 2D-Arrays.

Beispiel:

C




// C Program to print the elements of a> // Two-Dimensional array> #include> int> main(>void>)> {> >// an array with 3 rows and 2 columns.> >int> x[3][2] = { { 0, 1 }, { 2, 3 }, { 4, 5 } };> >// output each array element's value> >for> (>int> i = 0; i <3; i++) {> >for> (>int> j = 0; j <2; j++) {> >printf>(>'Element at x[%i][%i]: '>, i, j);> >printf>(>'%d '>, x[i][j]);> >}> >}> >return> (0);> }> // This code is contributed by sarajadhav12052009>

Binärbaum
>

>

Ausgabe

Element at x[0][0]: 0 Element at x[0][1]: 1 Element at x[1][0]: 2 Element at x[1][1]: 3 Element at x[2][0]: 4 Element at x[2][1]: 5>

Zeitkomplexität: O(N*M) , wobei N (hier 3) und M (hier 2) die Anzahl der Zeilen bzw. Spalten sind.

Raumkomplexität:O(1)

Wie werden 2D-Arrays im Speicher gespeichert?

Die Elemente des 2D-Arrays müssen zusammenhängend im Speicher gespeichert werden. Da die Computer über lineare Speicheradressen verfügen, müssen die 2D-Arrays linearisiert werden, um ihre Speicherung zu ermöglichen. Es gibt zwei Möglichkeiten, eine Linearisierung von Array-Elementen zu erreichen:

  • Zeilenhaupt- Die Linearisierungstechnik speichert zunächst die erste Zeile des Arrays, dann die zweite Zeile des Arrays, dann die dritte Zeile und so weiter. (d. h. Elemente werden zeilenweise gespeichert. Zeilen werden auf der Grundlage von Spalten aufgelistet)
  • Kolumnen-Dur – Diese Linearisierungstechnik speichert zuerst die erste Spalte, dann die zweite Spalte, dann die dritte Spalte usw. d. h. (Elemente werden spaltenweise gespeichert. Spalten werden auf der Grundlage von Zeilen aufgelistet)

Der Computer verfolgt nicht die Adressen aller Elemente des Arrays, sondern die Basisadresse (Startadresse des allerersten Elements) und berechnet bei Bedarf die Adressen der Elemente.

Weitere Informationen finden Sie im Artikel – Berechnung der Adresse des Elements von 1D, 2D und 3D

Dreidimensionales Array in C

A Dreidimensionales Array oder 3D Array in C ist eine Sammlung zweidimensionaler Arrays. Es kann als mehrere übereinander gestapelte 2D-Arrays visualisiert werden.

grafische Darstellung einer dreidimensionalen Anordnung

Grafische Darstellung einer dreidimensionalen Anordnung der Größe 3 x 3 x 3

Deklaration einer dreidimensionalen Anordnung in C

Wir können ein 3D-Array mit deklarieren X 2D-Arrays mit jeweils Und Reihen und Mit Spalten mithilfe der unten gezeigten Syntax.

Syntax:

data_type array_name[x][y][z];>
  • Datentyp: Art der Daten, die in jedem Element gespeichert werden sollen.
  • array_name: Name des Arrays
  • X: Anzahl der 2D-Arrays.
  • Und: Anzahl der Zeilen in jedem 2D-Array.
  • Mit: Anzahl der Spalten in jedem 2D-Array.

Beispiel:

int array[3][3][3];>

Initialisierung eines dreidimensionalen Arrays in C

Die Initialisierung in einem 3D-Array erfolgt auf die gleiche Weise wie bei 2D-Arrays. Der Unterschied besteht darin, dass mit zunehmender Anzahl der Dimensionen auch die Anzahl der verschachtelten Klammern zunimmt.

Ein 3D-Array in C kann wie folgt initialisiert werden:

  1. Initialisierungsliste
  2. Schleifen

Initialisierung des 3D-Arrays mithilfe der Initialisierungsliste

Methode 1 :

für String-Array Java
int x[2][3][4] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23};>

Methode 2 (besser) :

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

Auch hier können wir, genau wie die 2D-Arrays, auch die 3D-Arrays deklarieren, ohne die Größe der ersten Dimensionen anzugeben, wenn wir zur Initialisierung eine Initialisierungsliste verwenden. Der Compiler leitet automatisch die Größe der ersten Dimension ab. Aber wir müssen noch die restlichen Abmessungen angeben.

data_type array_name[][y][z] = {....};>

Initialisierung des 3D-Arrays mithilfe von Schleifen

Es ähnelt auch dem eines 2D-Arrays mit einer weiteren verschachtelten Schleife für den Zugriff auf eine weitere Dimension.

int x[2][3][4]; for (int i=0; i<2; i++) { for (int j=0; j<3; j++) { for (int k=0; k<4; k++) { x[i][j][k] = (some_value); } } }>

Zugriff auf Elemente im dreidimensionalen Array in C

Der Zugriff auf Elemente in 3D-Arrays ähnelt auch dem von 2D-Arrays. Der Unterschied besteht darin, dass wir für eine zusätzliche Dimension in 3D-Arrays drei Schleifen anstelle von zwei Schleifen verwenden müssen.

Syntax:

array_name[x][y][z]>

Wo,

  • X: Index des 2D-Arrays.
  • Und: Index dieser 2D-Array-Zeile.
  • Mit: Index dieser 2D-Array-Spalte.

C




// C program to print elements of Three-Dimensional Array> #include> int> main(>void>)> {> >// initializing the 3-dimensional array> >int> x[2][3][2] = { { { 0, 1 }, { 2, 3 }, { 4, 5 } },> >{ { 6, 7 }, { 8, 9 }, { 10, 11 } } };> >// output each element's value> >for> (>int> i = 0; i <2; ++i) {> >for> (>int> j = 0; j <3; ++j) {> >for> (>int> k = 0; k <2; ++k) {> >printf>(>'Element at x[%i][%i][%i] = %d '>, i,> >j, k, x[i][j][k]);> >}> >}> >}> >return> (0);> }>

>

>

Ausgabe

Element at x[0][0][0] = 0 Element at x[0][0][1] = 1 Element at x[0][1][0] = 2 Element at x[0][1][1] = 3 Element at x[0][2][0] = 4 Element at x[0][2][1] = 5 Element at x[1][0][0] = 6 Element at x[1][0][1] = 7 Element at x[1][1][0] = 8 Element at x[1][1][1] = 9 Element at x[1][2][0] = 10 Element at x[1][2][1] = 11>

Auf ähnliche Weise können wir Arrays mit beliebig vielen Dimensionen erstellen. Allerdings steigt auch die Komplexität mit der Anzahl der Dimensionen. Das am häufigsten verwendete mehrdimensionale Array ist das zweidimensionale Array.

Arrays sind auch eng mit Zeigern in der C-Sprache verbunden. Weitere Informationen zur Beziehung von Arrays mit Zeigern in C finden Sie unter Das Artikel.