In C, in einer Unix-Umgebung (Plan9), habe ich ein Array als Speicher.Int in einem simulierten Speicherarray von uchar
uchar mem[32*1024];
Ich brauche das Array zu verschiedenen Bereichen, wie beispielsweise ein int (integer), um anzuzeigen, die Größe des Speichers frei und avaliable enthalten. Also, ich habe dies versucht:
uchar* memp=mem;
*memp=(int)250; //An example of size I want to assign.
Ich weiß, die Größe eines int ist 4, so dass ich mit dem Gießen oder so etwas zu erzwingen, dass der Inhalt der ersten vier Schlitze von mem die Anzahl hat 250 in diesem Fall ist es Big Endian.
Aber das Problem ist, wenn ich versuche zu tun, was ich erklärte, es funktioniert nicht. Ich nehme an, dass es einen Fehler bei der Umwandlung von Typen gibt. Ich frage dich hoffentlich, wie könnte ich erzwingen, dass mem [0] zu mem [3] die angegebene Größe hat, dargestellt als int und nicht als uchar?
Vielen Dank im Voraus
Ok, danke, es funktioniert. Und ich habe den Punkt verstanden. –
Aber wenn ich einen Zeiger auf einen anderen Teil von Mem (das Array von Zeichen ohne Vorzeichen) zuweisen möchten, am Anfang zu Null. Könnte ich etwas in der Art machen ?: * ((void *) memp) = nil; Es kompiliert nicht. :( –
Es ist nie möglich, einen (void *) -Zeiger zu dereferenzieren – ephemient