Forum: Programmieren allgemein
by Apollonius,
15. Nov 2008
Wir haben hier klassich aneinander vorbei geredet. Ich dachte, die Aussage
bezöge sich auf einen falschen Index. Anscheinend bezog sie sich aber darauf, dass der Array-Indizierungs-Operator gleichzeitig auch dereferenziert.
Forum: Programmieren allgemein
by Apollonius,
15. Nov 2008
Doch, Hador hat recht. p = *((int*)((int)p + 5*4))
Forum: Programmieren allgemein
by Apollonius,
15. Nov 2008
Da bin ich tatsächlich von C++ und Java ausgegangen, in denen man ein int ohne Initialisierungsliste deklarieren kann. Insofern erübrigt sich in C die Unterscheidung statisches/dynamisches Array.
Soweit ich weiß, heißt das nicht p1 = (void*)((int)p2 + i), sondern p1 = (void*)((int)p2 + 4*i).
@0xF30FC7: Das ist tatsächlich grausig. Eine vernünftige Implementation sollte das als int*...
Forum: Programmieren allgemein
by Apollonius,
15. Nov 2008
Ich vermute, dass der C-Compiler ein int als statisches Array implementiert, d.h. auf dem Stack ablegt. Um zu dynamischen Arrays, also int, kompatibel zu bleiben, erlaubt er p = feld weiterhin und interpretiert es als Abkürzung für p = &feld. feld = p funktioniert aber nicht, weil feld als statisches Array eine feste Adresse hat. Dies ist jedoch nur Spekulation! Ich habe es nicht getestet.
Das...