Heim  >  Artikel  >  Backend-Entwicklung  >  In welcher Reihenfolge werden zweidimensionale Arrays in der C-Sprache im Speicher gespeichert?

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

青灯夜游
青灯夜游Original
2021-07-12 11:47:4528172Durchsuche

Die Speicherreihenfolge zweidimensionaler Arrays im Speicher ist Zeile für Zeile, das heißt, nachdem eine Zeile platziert wurde, wird die zweite Zeile platziert; das heißt, die Zeile „a[0]“ wird zuerst gespeichert dann wird die Zeile „a[1]“ gespeichert, und so weiter, bis die Elemente in jeder Zeile ebenfalls der Reihe nach gespeichert sind.

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

Die Betriebsumgebung dieses Tutorials: Windows 7-System, c99-Version, Dell G3-Computer.

Die allgemeine Form einer zweidimensionalen Array-Definition ist:

dataType arrayName[length1][length2];

wobei dataType der Datentyp, arrayName der Array-Name, length1 die Länge des Index der ersten Dimension und length2 die Länge des Index der zweiten Dimension ist .

Wir können uns ein zweidimensionales Array als eine Excel-Tabelle vorstellen, wobei Zeilen und Spalten die Anzahl der Zeilen und die Länge2 die Anzahl der Spalten darstellen Spalten müssen angegeben werden. Zum Beispiel:

int a[3][4];

definiert ein zweidimensionales Array mit 3 Zeilen und 4 Spalten mit insgesamt 3×4=12 Elementen. Der Array-Name ist a, das heißt:

a[0][0], a[0][1], a[0][2], a[0][3]
a[1][0], a[1][1], a[1][2], a[1][3]
a[2][0], a[2][1], a[2][2], a[2][3]

Wenn Sie die Elemente darstellen möchten In Zeile 2 und Spalte 1 sollten Sie ein[2][1] schreiben.

Sie können sich ein zweidimensionales Array auch als Koordinatensystem mit einer x-Achse und einer y-Achse vorstellen. Um einen Punkt in einer Ebene zu bestimmen, müssen Sie sowohl die x-Achse als auch die y-Achse kennen.

Ein zweidimensionales Array ist konzeptionell zweidimensional, wird jedoch kontinuierlich im Speicher gespeichert. Mit anderen Worten: Die Elemente eines zweidimensionalen Arrays liegen nebeneinander und ohne Lücken zwischen ihnen. Wie speichert man zweidimensionale Arrays im linearen Speicher? Es gibt zwei Möglichkeiten:

  • Eine besteht darin, nach Zeilen zu ordnen, das heißt, nachdem eine Zeile platziert wurde, wird die zweite Zeile platziert; platziert wird, wird die zweite Zeile platziert.

  • In der Sprache C sind zweidimensionale Arrays in Zeilen angeordnet.
  • Das heißt, zuerst wird die Zeile a[0] gespeichert, dann wird die Zeile a[1] gespeichert und schließlich werden auch die 4 Elemente in jeder Zeile der Reihe nach gespeichert. Array a ist vom Typ int, jedes Element belegt 4 Bytes und das gesamte Array belegt insgesamt 4×(3×4)=48 Bytes.

Sie können es sich so vorstellen: Ein zweidimensionales Array besteht aus mehreren eindimensionalen Arrays gleicher Länge.

Zum Beispiel:

Eine Lerngruppe besteht aus 5 Personen und jede Person hat Testergebnisse für 3 Kurse. Ermitteln Sie die durchschnittliche Punktzahl für jedes Fach und die durchschnittliche Gesamtpunktzahl der Gruppe.

--Mathe8061598576Für diese Frage, Sie kann a definieren Das zweidimensionale Array a[5][3] speichert die Punktzahlen von 5 Personen in 3 Kursen, definiert ein eindimensionales Array v[3] zum Speichern der durchschnittlichen Punktzahlen jedes Fachs und definiert dann einen variablen Durchschnitt um die durchschnittliche Gesamtpunktzahl zu speichern. Die endgültige Programmierung lautet wie folgt:
#include <stdio.h>
int main(){
    int i, j;  //二维数组下标
    int sum = 0;  //当前科目的总成绩
    int average;  //总平均分
    int v[3];  //各科平均分
    int a[5][3];  //用来保存每个同学各科成绩的二维数组
    printf("Input score:\n");
    for(i=0; i<3; i++){
        for(j=0; j<5; j++){
            scanf("%d", &a[j][i]);  //输入每个同学的各科成绩
            sum += a[j][i];  //计算当前科目的总成绩
        }
        v[i]=sum/5;  // 当前科目的平均分
        sum=0;
    }
    average = (v[0] + v[1] + v[2]) / 3;
    printf("Math: %d\nC Languag: %d\nEnglish: %d\n", v[0], v[1], v[2]);
    printf("Total: %d\n", average);
    return 0;
}
Betriebsergebnisse:
C Englisch Zhang Tao
75 92 Wang Zhenghua.
65 71 李丽丽
63 70 Zhao Quanquan
87 90 Zhou Mengzhen
77 85
Input score:
80 61 59 85 76 75 65 63 87 77 92 71 70 90 85↙
Math: 72
C Languag: 73
English: 81
Total: 75

Das Programm verwendet eine verschachtelte Schleife, um die Ergebnisse aller Schüler in allen Fächern zu lesen. In der inneren Schleife werden die Ergebnisse jedes Schülers in einem bestimmten Kurs nacheinander gelesen und diese Ergebnisse werden akkumuliert. Nach dem Verlassen der inneren Schleife (Eintreten in die äußere Schleife) werden die akkumulierten Ergebnisse durch 5 geteilt und an v[i] gesendet ] , das ist die durchschnittliche Punktzahl für den Kurs. Die äußere Schleife durchläuft insgesamt dreimal eine Schleife, berechnet die Durchschnittsnoten jedes der drei Kurse und speichert sie im Array v. Nachdem alle Schleifen abgeschlossen sind, addieren Sie v[0], v[1], v[2] und dividieren Sie durch 3, um die durchschnittliche Gesamtpunktzahl zu erhalten.

Verwandte Empfehlungen: „

C-Sprachvideo-Tutorial

Das obige ist der detaillierte Inhalt vonIn welcher Reihenfolge werden zweidimensionale Arrays 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