Quote:
Originally Posted by ƬheGame
Ihr habt das mit den Pointern noch nicht so ganz begriffen ne ^^
Wenn du einen Zeiger hast der auf einen Int zeigt der als wert 32 hat und du nun einen Zeiger erstellst der auf den genannten Zeiger zeigt. Dann zeigen am Ende beide Zeiger auf den int mit dem Wert 32. Ein Zeiger zeigt immer auf eine Adresse im RAM sobald sich der Wert darin ändert, ändert sich auch der Wert des Zeigers. In deinem Beispiel hat Zeiger2 IMMER den gleichen wert wie Zeiger ;) Nebst dem müsste dein Pointer Zahl2 so aussehen "int **Zeiger2;" weil es ein Pointer auf einen Pointer ist.
Code:
int x = 1;
int xCache = x;
int *ptrToX = &x;
for(x = 0; x <= 100; x++){
foo(xCache); // x hat den alten wert
bar(ptrToX); // x mit dem neuen wert
xCache = *ptrToX; // den wert von x cachen
}
Hab euch etwas gezeichnet:
[Only registered and activated users can see links. Click Here To Register...]
|
danke für die erklärung, das mit den pointern bringe ich immer wenig durcheinander, aber deine erklärung hats ziemlich verständlich gemacht, dafür danke ich dir schonmal sehr :D, nur noch was
1. was macht foo und bar?
2. ich hab mich wahrscheinlich schlecht ausgedrückt, das problem von mir ist ja das bei mir die variabel wo der pointer drauf zeigt nicht existiert, also sie existiert schon aber nicht in meiner source, wie gesagt diese ist ingame meine coordinate
ich glaub ich kanns am besten durch meine source als beispiel zeigen, damit ihr wisst was gemeint ist
also ich habe mit pattern gearbeitet
DWORD xJmpBack = 0; //jmp damit, nach meinem bearbeiteten punkt normal weiter gemacht wird
DWORD xRegister = 0x0; // hier wird die adresse von EAX gespeichert(siehe unten)
DWORD xPtr; // hier wird im nächsten teil hpregister+ offset drauf gespeichert
in meinem header ist der teil:
_declspec(naked) void xChange()
{
__asm
{
CMP [EAX+0x46AC],0h
MOV xRegister, EAX
jmp [xJmpBack]
}
}
in meiner source.cpp ist das hier:
xPtr = xRegister + 0x46AC;
klappt auch wunderbar alles, hab somit die x coordinate ingame, nun aber zum problem
unzwar will ich, sobald ich mein programm starte, die x coordinate zum start punkt gespeichert werden. damit ich das eine bedingung habe wie: if(*(int*)xPtr != xstart) ....;
oder gibts vllt eine bedinung wie , if (wenn *(int*)xPtr sich ändert), das würde das ganze auch extrem leicht machen aber so eine bedingung ist mir nicht bekannt