On Sun, Dec 24, 2000 at 12:32:43PM +0100, Matthias Petermann wrote:
Hallo Konrad,
Ich heiß zwar nicht Konrad, mail aber trotzdem mal :).
ich habe Deine Lösung verwendet und alles funktioniert wie gewünscht. Ich habe aber noch eine zusätzliche Frage:
Deine Variante für den Prototyp ist folgende:
int fill(int feld[][6]);
Ich hatte in meinen eigenen "Versuchen" vorher schon int fill(int feld[][]); probiert, jedoch ohne Erfolg. Warum muss für die zweite Dimension die Größe des Feldes mit angegeben werden und
Wie schon einmal gemailt, benötigt der Compiler die Informationen, wie weit er von feld[n][x] nach feld[n+1][x] springen muß. Da das abhängig ist von der (statischen) Größe der zweiten Dimension des Arrays, muß diese explizit angegeben werden, da es sonst mehrdeutig wird. Wenn du "feld[][]" angibst, ist eben unbekannt, wie weit der Sprung von z.B. feld[0][0] nach feld[1][0] ausfällt. Wenn du hingegen "feld[][6]" angibst, ist das bekannt, nämlich 6xsizeof(int) = 24 bytes.
wie würde das z.B. bei dreidimensionalen Feldern aussehen?
"int feld[][constant x][constant y]" müßte dann gehen.
Vielen Dank,
Matthias
Ulf