Grundlagen der Programmiersprache C
int m[3][4];
printf("%td\n", (char *)&m[2][1] - (char *)&m[0][0]);int habe 4 Byte. Welche Ausgabe erzeugt der obige Code bei der Ausführung?
- A9
- B20
- C36
Antwort und Erläuterung anzeigen
Antwort: C. 36
Ein zweidimensionales Array wird in C zeilenweise abgelegt (Row-Major): m[3][4] liegt in der Reihenfolge m[0][0] bis m[0][3], m[1][0] bis m[1][3], m[2][0] bis m[2][3] im Speicher. Vor m[2][1] liegen die 2 × 4 = 8 Elemente der beiden vorherigen Zeilen und 1 Element derselben Zeile, zusammen 9 Elemente. Ein Element hat 4 Byte, daher beträgt der Abstand vom Anfang 9 × 4 = 36 Byte. Da vor der Subtraktion in char * umgewandelt wird, wird die Differenz in Byte angegeben.
Weiter: 9 weitere Fragen zu Grundlagen der Programmiersprache C