Übergabe von mehrdimensionalen Arrays an Funktionen
-
Schachbrettspielfeld mit variabler Größe anlegen und ausgeben.
#include <stdio.h> #include <stdbool.h> void setupChess(char *board, int width, int height) { for (int i = 0; i < height; i++) { bool white = i % 2 == 0; for (int j = 0; j < width; j++) { char c; if (white) c = '.'; else c = '#'; board[i][j] = c; //subscripted value is neither array nor pointer white = !white; } } } void print(char *board, int width, int height) { for (int i = 0; i < height; i++) { for (int j = 0; j < width; j++) { printf("%2c", board[i][j]); //subscripted value is neither array nor pointer } printf("\n"); } printf("\n"); } int main() { int width = 14; int height = 14; char board[width][height]; setupChess(board,width,height); print(board, width, height); return 0; }
Ich verzweifle gerade an der Übergabe des Arrays an die Funktion. Der Fehler ist als Kommentar im Code.
-
Jedes Array* (ob 1D oder mehr) zerfällt in einen einfachen Zeiger.
Du musst die Positionen selber berechnen.printf("%2c", board[i*width+j]);
*Ich meine echte Arrays und keine Mehrfachzeiger.
-
Vielen Dank. Es läuft.