Re: Zweidimensionaler Array wird falsch belegt.
Philipp Otte <[email protected]>
| Newsgroups | gmane.linux.suse.programming |
|---|---|
| Message-ID | <[email protected]> |
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
signature.asc
(application/pgp-signature, 189 B)
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.1 (GNU/Linux) iD8DBQBC0oH4PPwLyJcVxnURAiPuAJ9f1V9rPS3oVxsQXiQxQdPKZgEHZACfeMkz zc0SzrYpyMh0kZKkAIlL7tY= =32rX -----END PGP SIGNATURE-----