Char Pointer zu INT Pointer umwandeln.
-
Hallo,
ist es möglich einen char pointer zu einen INT Pointer umzuwandeln, wenn JA wie?MfG Cassis.
-
int main() { int i,*p; char *q; p=&i; q=p; *(int*)q=0xFFFF; return 0; };
...also direkt umwandeln nicht.
-
Was passiert denn bei : (int)q=0xFFFF;
Die Zeile versteh ich nicht.
-
q wird zum int* gemacht, dann dereferenziert und ein wert an den gezeigten speicher geschrieben.
-
Ok nehmen wir an ich hab folgenden Code:
main(){ int wert=528; char *pointer; pointer=&wert; printf("Ergebniss: %d", *pointer); }
Wenn ich das ausgebe kommt bei Ergebnisse nicht 528 raus sondern 16. Wie kann ich den Charpointer so hinbiegen das er mir das richtige Ergebniss rausbringt OHNE das ich etwas an der Grundstruktur des Programms ändere. Ihr fragt Euch vielleicht wieso machst du das nicht anders, aber so sind die vorraussetzungen in einem Kernel Programm das ich bearbeiten muss.
Hoffe ihr könnt helfen.
Grüße Cassis.
-
main(){ int wert=528; char *pointer; pointer=&wert; printf("Ergebniss: %d", *(int*)pointer); }
hab ihn zum int* gecastet, bevor er dereferenziert wird. damit bekomme ich einen ganzen int und nicht nur einen char.
-
~Cassis schrieb:
Ok nehmen wir an ich hab folgenden Code:
main(){ int wert=528; char *pointer; pointer=&wert; printf("Ergebniss: %d", *pointer); }
Wenn ich das ausgebe kommt bei Ergebnisse nicht 528 raus sondern 16. Wie kann ich den Charpointer so hinbiegen das er mir das richtige Ergebniss rausbringt OHNE das ich etwas an der Grundstruktur des Programms ändere. Ihr fragt Euch vielleicht wieso machst du das nicht anders, aber so sind die vorraussetzungen in einem Kernel Programm das ich bearbeiten muss.
Hoffe ihr könnt helfen.
Grüße Cassis.
Wertebereich Integer: Systemabhängig, unter 32 Bit Windows eben 32 Bit
Wertebereich Char: 0-255