Problem mit Pointer! - Aber wieso?
-
Guten Tag zusammen,
ich schreibe gerade an einer Funktion, die beim Programmstart die Felder befüllen soll. Die Funktion sieht so aus:
void felderbefuellung(char *felds1, char *felds2, char *spielfeld){ int i, j; for(i=0;i<namenslaenge;i++){ felds1[i] = '\0'; } for(i=0;i<namenslaenge;i++){ felds2[i] = '\0'; } for(i=0;i<matrix1;i++){ for(j=0;j<matrix2;j++){ spielfeld[i][j] = 0; } } }
Ist ja alles schön und gut, denn die ersten beiden Felder werden befüllt. Was nicht funktioniert ist die Befüllung des 3. Feldes.
Es kommt der Fehler:
K:\BackUp\Thomas\Schule\Vier_Gewinnt_Proper\Vier_Gewinnt_Proper.cpp(182) : error C2106: '=' : Linker Operand muss ein L-Wert seinIch hätte natürlich eine alternative um diese 2 Dimensionale Feld zu befüllen, allerdings würde ich gerne wissen warum das so nicht funktioniert? Ist ja eig die gleiche Syntax wie bei den ersten beiden Schleifen...
Schonmal vielen Dank
Euer Global
-
Du hast spielfeld nur als einfachen Pointer auf char
definiert, außerdem, woher soll der Compiler denn bei
spielfeld[i][j] wissen, wie groß die 2. Dimension von
spielfeld ist?
-
Wie meinst du des mit dem einfachen Pointer?
Es ist so definiert:const int matrix1 = 7; const int matrix2 = 8; char feld[matrix1][matrix2]; //Deklariert die Größe des Spielfeldes.
also Global...
MfG
-
1. Du verwendest einen C++-Compiler für C. Das ist nicht gut.
2. Wenn das 2D-Array eh global ist, warum dann übergeben?
3. Ein 2D-Array übergibt man so:void foo( int bar[][DIM_Y] ); int baz[DIM_X][DIM_Y]; foo( baz );
-
Aber die Funktion hat als Signatur
void felderbefuellung(char *felds1, char *felds2, char *spielfeld){
und da ist spielfeld nur ein einfach-pointer kein Doppelpointer auf char
Versuchs mal mit
void felderbefuellung(char *felds1, char *felds2, char *spielfeld[matrix2]){
-
@tim
Ich versteh zwar iwie dein Code nicht, aber wenn ich den 3. Parameter ganz entferne, dann funktionierts auch
danke
-
Javaner schrieb:
Versuchs mal mit
C/C++ Code:
void felderbefuellung(char *felds1, char *felds2, char *spielfeld[matrix2]){
C/C++ Code:
void felderbefuellung(char *felds1, char *felds2, char *spielfeld[matrix2]){
C/C++ Code:
void felderbefuellung(char *felds1, char *felds2, char *spielfeld[matrix2]){Würde ich des machen, würde dann nicht nur die erste Dimension übergeben werden?
Also ich hab den 3. Parameter jetzt einfach nach Tims Tipp rausgeworfen und es funktioniert prächtig...
Vielen vielen dank euch allen