Ü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. 🙂


Anmelden zum Antworten