Wie zu deklarieren einen initialisierten mehrdimensionales Array in C-Programmierung

In der C-Programmierung ist das dunkle Geheimnis von mehrdimensionalen Arrays, dass sie nicht wirklich existieren. Intern sieht der Compiler immer noch Dinge, wie einzelne Dimensionen - nur eine lange Reihe voller Elemente. Die doppelte (oder dreifach) bracket Notation wird verwendet, um das richtige in der Anordnung bei der Kompilierung Offset zu berechnen. Das ist in Ordnung, da der Compiler die Arbeit macht.

Sie können sehen, wie mehrdimensionale Arrays in regelmäßigen alten langweiligen Arrays zu übersetzen, wenn man sie bereits initialisiert erklären. Beispielsweise:

int grid [3] [4] = {5, 4, 4, 5,4, 4, 5, 4,4, 5, 4, 5} -

Die Grid-Array besteht aus drei Reihen von vier Elemente jeder. Wie gerade gezeigt, ist es als ein Gitter erklärt und es sieht aus wie ein Gitter. Eine solche Erklärung arbeitet, solange das letzte Element kein Komma, nachdem es hat. In der Tat kann man das Ganze wie folgt schreiben:

int grid [3] [4] = {5, 4, 4, 5, 4, 4, 5, 4, 4, 5, 4, 5} -

Diese Anweisung definiert noch ein mehrdimensionales Array, aber man kann sehen, wie es ist wirklich nur ein eindimensionales Array mit Dual-Indizes. In der Tat ist der Compiler intelligent genug, um auch die Dimensionen, um herauszufinden, wenn Sie nur eine von ihnen geben, wie in diesem Beispiel:

int grid [] [4] = {5, 4, 4, 5, 4, 4, 5, 4, 4, 5, 4, 5} -

In der vorangehenden Zeile, sieht der Compiler die 12 Elemente in einem Array Gitter, so weiß es automatisch, dass es sich um eine Matrix auf der 4 in den Klammern auf Basis 3-by-4 ist. Oder Sie können dies tun:

int grid [] [6] = {5, 4, 4, 5, 4, 4, 5, 4, 4, 5, 4, 5} -

In diesem Beispiel würde Abbildung der Compiler, dass Sie zwei Reihen von sechs Elementen haben. Aber das folgende Beispiel ist nur falsch:

int grid [] [] = {5, 4, 4, 5, 4, 4, 5, 4, 4, 5, 4, 5} -

Der Compiler wird nicht nett zu bekommen. In der vorangehenden Zeile, sieht es eine falsch erklärt eindimensionales Array. Die zusätzlichen eckigen Klammern sind nicht erforderlich.

Übung 1: Geben Sie den Code aus Tic-Tac-Toe, so dass die Tic-Tac-Toe-Brett initialisiert wird, wenn das Array deklariert wird - einschließlich der X in der richtigen Stelle setzen.

Tic Tac Toe

# include int main () {char tictactoe [3] [3] -int x, y - / * initialisieren Matrix * / for (x = 0-XLT; 3-x ++) für (y = 0-ylt; 3-y ++ ) tictactoe [x] [y] = '.'- tictactoe [1] [1] =' x '- / * Anzeige Spielbrett * / puts ( "Ready to spielen Tic-Tac-Toe?")-for(x=0-xlt;3-x++){for(y=0-ylt;3-y++)printf("%ct",tictactoe[x][y])-putchar('n')-}return(0)-}

Menü