Void-Pointer erhöhen
-
hi
wie kann ich einen Void-Pointer erhöhen?
DWORD test;
void *pptest;// pptest wird initialisiert
test=(((DWORD)ppvBits)++);
bzw.
((DWORD*)pptest)++;
test = (DWORD)pptest;es tritt jedes Mal folgender Fehler auf:
....cpp(140) : error C2105: '++' muss ein L-Wert sein
-
ihr versucht die Pointerafresse zu addieren. Das ganze muss folgendermaßen aussehen:
Du musst als erstes mal pptest auf irgendwas zeigen lassen. Z.b.
DWORD test;
DWORD test2;
void pptest;
pptest = &test2; //pptest zeigt auf den Wert von test2 (falls dus nicht wissen solltest &test2 ist die memmory-adresse von test2)
((DWORD*)pptest)++;
test = ((DWORD)pptest);
so müsstes gehen
Du versuchst irgendwie einen uninitialisierten pointer zu erhöhen
-
Wenn der Wert nicht dauerhaft erhöht werden muss, dann kannst du statt ++ an der Stelle + 1 verwenden.
MfG mAV
-
*moralapostelei* Ooooh, wenn der ganze Code so aussieht crasht es früher oder später
. Ich würde mir bevor ich sowas schreibe Gedanken machen ob es nicht besser geht.
-
jo da hast du allerdings recht aber naja ich frag da schon garnich mehr
-
mwoidt schrieb:
ihr versucht die Pointerafresse zu addieren. Das ganze muss folgendermaßen aussehen:
Du musst als erstes mal pptest auf irgendwas zeigen lassen. Z.b.
DWORD test;
DWORD test2;
void pptest;
pptest = &test2; //pptest zeigt auf den Wert von test2 (falls dus nicht wissen solltest &test2 ist die memmory-adresse von test2)
((DWORD*)pptest)++;
test = ((DWORD)pptest);
so müsstes gehen
Du versuchst irgendwie einen uninitialisierten pointer zu erhöhendes mit dem auf was Zeigen lassen wollte ich durch // initialisisieren deutlich machen, k, aber so geht's natürlich auch
ne, so geht's net..
mit ((DWORD)pptest)++; erhöht man in dem Fall ja nur test2 um 1
ich möchte aber, dass pptest auf eine andere Adresse zeigt, und zwar genau 1 DWORD weiter
nur wie geht das?
normalerweise kann man das ja bei nem Int-Pointer ohne Probleme mit ++ machen
aber wieso geht des net beim Void-Pointer, wenn ich den DWORD *-Cast verwenden@MaSTaH:
klar crasht das 2. Bsp., weil test2 keinen Wert hat, aber beim 1. Bsp sollte der Kommentar dieses als Pseudo-Code erfüllen, eben damit des net crasht..
mir geht's aber nur darum, wie man prinzipiell nen Void-Poitner erhöht
nur es geht scheinbar?! leider net wie bei anderen Pointern
-
Um mal eins klarzustellen: mit einem void i;i++; (das müsste gehen glaub ich) erhöhst du wennschon nicht die Adresse um eine Variable, sondern um eine Größeneinheit. Wie groß die ist hängt von prozessoremodus bzw. vom pm-deskriptor ab
-
mwoidt schrieb:
Um mal eins klarzustellen: mit einem void i;i++; (das müsste gehen glaub ich) erhöhst du wennschon nicht die Adresse um eine Variable, sondern um eine Größeneinheit. Wie groß die ist hängt von prozessoremodus bzw. vom pm-deskriptor ab
- das geht nicht. schon die deklaration funktioniert nicht, da void ein unvollständiger Typ ist. wenn es ein void* wär, würde die Erhöhung nicht funktionieren, aus dem selben Grund übrigens. gcc hat eine Erweiterung, die Pointerarithmetik mit void* zuläßt.
- prozessormodus oder pm-descriptor haben mit c++ nichts zu tun
-
mwoidt schrieb:
Um mal eins klarzustellen: mit einem void i;i++; (das müsste gehen glaub ich)
Nein.
Selbst wenn dort
void* i;
i++;
stehen wuerde, wuerde es nicht gehen.
-
imho ist die ganze Diskussion überflüssig.
Es gibt nicht umsonst Alternativen zu void *.Devil
-
void * p; ((char *&)p)++;