Array als Funktionsparameter



  • Hallo,

    ich möchte einer Funktion ein Array als Zeiger zuweisen. Das sieht bei mir so aus:

    bool Lösungssudoku::widerspruch(bool probeSudokuMöglichkeiten[9][9][9]) {
    	int z;
    	for (int i = 0; i < 9; ++i) {
    		for (int j = 0; j < 9; ++j) {
    			z = 0;
    			for (int l = 0; l < 9; ++l) {
    				if (!probeSudokuMöglichkeiten[i][j][l]) {
    					z++;
    				}
    			}
    			if (z == 9) {
    				return true;
    			}
    		}
    	}
    	return false;
    }
    

    mit Aufruf

    if (widerspruch(probeSudokuMöglichkeiten)) {
    }
    
    probeSudokuMöglichkeiten
    

    ist vor der Übergabe ein 9x9x9 Array mit bool-Werten.
    Wenn ich nun einen Haltepunkt in die Funktion 'widerspruch' setze, und dann beim Debuggen mir den Inhalt des Arrays anschaue, zeigt mir Visual Studio nur noch ein 9x9 Array mit bool-Werten an. Mache ich einen Fehler mit den Übergabeparamtern?


  • Mod

    Der äußerste Arrayindex (also der ganz vorne) ist bei Funktionsparametern Wumpe. Da wird sowieso ein Zeiger draus gemacht. Hier ist probeSudokuMöglichkeiten folglich ein Zeiger auf ein 9x9 bool-Array. Und das zeigt dir dein Debugger an.

    Da du offensichtlich Anfänger bist und mit Arrays nicht gut zurecht zu kommen scheinst (ist ja nicht deine erste Frage hier): Bleib doch einfach bei gewrappten Arrays, wie std::array oder einer eigenen Sudokufeldklasse (wurde dir ja auch schon gezeigt), die haben dann die gleichen Eigenschaften wie alle anderen Datentypen und keine Sonderregeln wie rohe Arrays.


Anmelden zum Antworten