Arraydaten anspringen
-
Hallo Leute,
ich habe einen Pointer auf ein Array.
double* ptrArray;
Dieses Array ist zB. eine 800*600 Matrix. Wie kann ich nun das Feld ptrArray[123][456] erreichen? Gibt es einen Cast der aus dem Pointer ein Array[x][y] machen kann? Wobei x und y variabel sein sollten.
Momentan behelfe ich mich so:
x=800*456+123 for (i=0; i<x; i++) ptrArray++;
Es gibt aber bestimmt einen eleganteren Weg. Notfalls halt Assembler Code mit Sprung einfügen...
Viele Grüße
Mike
-
Wie wärs mit (ptrArray+600123+456) ??
Wobei die Frage ist: Wie ist dein ptrArray eigentlich aufgebaut?
C/C++ Code:
x=800*456+123
for (i=0; i<x; i++) ptrArray++;Warum machst du da eine Zählschleife, wenn du eh weißt wieviel du addieren musst? Außerdem ist es schlecht, wenn du den Zeiger einfach so erhöhst, denn wie willst du dann noch rausfinden, wo der Anfang war (ohne wieder das ganze abzuziehen)?? Oder hast du das in einem anderen Zeiger gespeichert?
-
Arghh! Der einfachste Weg... so nahe. Den Zeiger auf den Anfang habe ich natürlich extra abgespeichert.
Double ist 8 Byte breit. Der Befehl müsste also *(ptrArray+(600*123+456)*8) heißen.Mike
-
Ohne das *8, Pointerarithmetik basiert nicht auf Bytes, sondern auf Einheiten der entsprechenden Typen.
-
Und das ist auch gut so...