Heim >Backend-Entwicklung >C#.Net-Tutorial >In welcher Reihenfolge werden zweidimensionale Array-Elemente in der C-Sprache im Speicher gespeichert?

In welcher Reihenfolge werden zweidimensionale Array-Elemente in der C-Sprache im Speicher gespeichert?

烟雨青岚
烟雨青岚Original
2020-06-28 14:54:0710152Durchsuche

In der Sprache C werden zweidimensionale Array-Elemente Zeile für Zeile im Speicher gespeichert. Das zweidimensionale Array A[m][n] ist ein zweidimensionales Array mit m Zeilen und n Spalten. Unter der Annahme, dass a[p][q] das erste Element von A ist, kann es gemäß der „Zeilenpriorität“ gespeichert werden " oder „Column Major“-Speicher wird verwendet, um die Adresse des Elements a[i][j] zu berechnen.

In welcher Reihenfolge werden zweidimensionale Array-Elemente in der C-Sprache im Speicher gespeichert?

In der Sprache C werden zweidimensionale Array-Elemente Zeile für Zeile im Speicher gespeichert.

Zweidimensionales Array A[m][n], ein zweidimensionales Array mit m Zeilen und n Spalten. Sei a[p][q] das erste Element von A, das heißt, die Zeilenindizes des zweidimensionalen Arrays reichen von p bis m+p und die Spaltenindizes von q bis n+q „Reihenhauptordnung“, dann wird die Adresse des Elements a[i][j] wie folgt berechnet:

LOC(a[i][j]) = LOC(a[p][q]) + ((i − p) * n + (j − q)) * t; Wenn

in „Spalten-Hauptreihenfolge“ gespeichert wird, wird die Adresse wie folgt berechnet:

LOC( a[i][j]) = LOC(a[p ][q]) + ((j − q) * m + (i − p)) * t;

Die minimale Anzahl erforderlicher Einheiten Zum Speichern dieses Arrays sind (m-p+1) * (n- q+1) * t Bytes erforderlich.

In welcher Reihenfolge werden zweidimensionale Array-Elemente in der C-Sprache im Speicher gespeichert?

Erweiterte Informationen

C++ dynamisches zweidimensionales Array:

Nehmen Sie Kunststoff als Beispiel, Zeile ist die Anzahl der Zeilen, col ist die Anzahl der Spalten

int **data;//Speicherzeiger des zweidimensionalen Arrays (Zeiger auf Zeiger. Die Adresse von date=x[0][0]. Dies Weil sizeof Das (Datums-)Ergebnis ist 4 und es ist unmöglich, ein zweidimensionales Array zu speichern.

//以下实现如何申请内存
data = new int *[row];
for (int k = 0; k < row; k++)
{
data[k] = new int[col];
}
//赋值跟普通二维数组一样 例如
data[0][0] = 5; //将二维数组1行1列(C++中称为0行0列)赋值为5
//删除内存
for (int i = 0 ; i < row; ++i)
{
delete [] data[i]; //此处的[]不可省略
}
delete [] data;

Empfohlenes Tutorial: „C-Sprache

Das obige ist der detaillierte Inhalt vonIn welcher Reihenfolge werden zweidimensionale Array-Elemente in der C-Sprache im Speicher gespeichert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn