Long Variablenadresse auf Char Variablenadresse wandeln
-
Hi,
ich habe ein Problem. Ich möchte von irgendeinem Datentype, größer als char und ganzzahlig mit vorzeichen, die Adresse der Variable einer Char Pointer zuweisen. Quasi sowas:
long number = 12345; char *zahl; zahl = &number;Mein Ziel ist es nachher für beliebige Datentypen die binärdarstellung aus dem Speicher zu lesen, also quasi so:
long = number = 12345; char *zahl; zahl = &number; char2bin(*zahl); // Hier wird ein char binär dargestellt zahl = &number+8; char2bin(*zahl);Bei der zuweisung
zahl = &number;bekomme ich allerdings immer folgenden fehler:
Fehler: »long int*« kann nicht nach »char*« in assignment umgewandelt werden
Kann mir da irgendwer helfen.
Vielen Dank im vorraus.
P.S.: Noch als hinweis, ich darf keine vorgefertigten Funktionen nutzen, ist für eine Betriebssystemübung
daher alles von selber schreiben. Jedoch wurmt mich der Fehler im Moment.
-
long number = 123456; char* p = reinterpret_cast<char*>(&number);
-
prinzipiell gehen auch C-Style-Cast:
long number = 123456; char* p = (char*)&number;und Function-Style-Cast:
long number = 123456; char* p = char*(&number);
-
DrakoXP schrieb:
prinzipiell gehen auch C-Style-Cast
Gehen ja, aber das ist auch schon alles. Man kann seine Haustür auch mit Dynamit oder einer Brechstange öffnen, ob es sinnvoll ist wage ich zu bezweifeln und verwende lieber den Haustürschlüssel.
Die C++ Casts existieren nicht ohne Grund und sollten unter C++ auch verwendet werden. Und selbst wenn man alle Vorteile der C++ Casts bezogen auf das Typsystem mal außen vor lässt, so gibt es noch einen guten Grund aus Programmierersicht für die C++ Casts: Man kann besser nach den Stellen suchen wo solche verwendet werden.
cu André