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-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.