Am Montag, den 11.07.2005, 16:08 +0200 schrieb Tobias Hirning:
Hallo Listenbewohner! Im Moment habe ich ein Problem mit einem zweidimensionalen Array in C.
Das Array wird mit int array [100][100]; definiert.
Wenn ich das ganze jetzt mit einer Doppelschleife initialisiere und danach das Element array [1][0] = 1 zu setzten versuche ergibt sich folgendes Speicherabbild:
array [0][99] = 0 array [0][100] = 1 array [1][0] = 1
Ich finde es nun ziemlich merkwürdig, dass [0][100] = 1 ist, obwohl ich ja nur [1][100] = 1 setzen wollte und alle anderen Elemente zuvor auf 0 gesetzt wurden. Das Setzen von [1][0] erfolgt per
scanf ("%i", x); scanf ("%i", y); array [x][y] = 1;
Es kann natürlich auch sein, dass ich hier etwas falsch verstanden habe und dazu noch was lernen muss. Vielen Dank! Tobias
Hi Tobias, sieht nach einem typischen Problem aus. Ein zweidimensionales Array ist im Speicher folgendermaßen angeordnet: als erste aus dem a[0] dann die a[1]... Das als kleine Erläuterung des folgenden Effekts. Wenn Du schreibst: int array[100] hast Du die Elemente a[0] bis a[99] nicht a[0] bis a[100]. Da Arrayvariablen aber nur Zeiger sind gilt: a[0][100] = a[1][0], weil das 100. Element relativ zu a[0][0] gesehen eben a[1][0] ist. Ich hoffe, ich habe mich verständlich ausgedrückt. philipp