Hallo,
ich bin fast am verzweifeln, ich probiere schon das halbe Pfingstwochenende an dieser Aufgabe rum:
Ziel ist es, den Inhalt des Arrays "zahlen" an der Stelle "//HIER" in der gezeigten Hexadezimaldarstellung anzugeben. Dazu denke man sich eine fiktive Startadresse aus. Z.B 0x000. Nun ueberlege man sich, welche Werte in "zahlen" stehen. Diese wandele man anschliessend in die Hexadezimaldarstellung um. Achtung: "zahlen" ist vom Typ "int". Ein Element nimmt also 4 Byte in Anspruch. Das heisst fuer jedes Element von "zahlen" sind vier Hexadezimalzahlen mit jeweils zwei Ziffern notwendig, da diese jeweils ein Byte darstellen. Ferner ist darauf zu achten, dass es sich um ein LSB-first Speichermodell handelt.
int main()
{
unsigned int zahlen[7];
unsigned int index;
for (index=0; index < 7; index++)
zahlen[index] = index+1;
unsigned int *eine_zahl = &(zahlen[2]);
unsigned int *andere_zahl = &(eine_zahl[4]);
cout << &(zahlen[2]) << "\n";
eine_zahl--;
(*eine_zahl)++;
(*andere_zahl) += 3;
andere_zahl -= 3;
// HIER
return 0;
}
Alles anzeigen
Bitte stellen Sie eine mögliche Speicherbelegung an der Stelle "HIER" durch die obigen Code da. Verwenden Sie dabei eine Ansicht wie die in der Vorlesung behandelte (Stichwort "hex dump"), wie hier:
0x0000 33 3A 20 44 61 74 65 6E 20 69 6D 20 53 70 65 69
0x0010 63 68 65 72 2C 20 41 72 72 61 79 73 2C 20 50 6F
0x0020 69 6E 74 65 72 0A
Dabei ist rechts die Speicheradresse angegeben, und links stehen 0x10 (also 16) an dieser Adresse anfangende Bytes, die jeweils durch 2 Hexadezimalziffern dargestellt werden. Die Maschine, auf der der Programmcode laufen soll, hat eine 32-Bit-Architektur und verwendet ein "LSB first"- Speichermodell.
Kann mir da bitte jemand ein wenig helfen? Mein C++ Buch "C++ Einführung und professionelle Programmierung" hilft mir nicht weiter.
Viele Grüße
Matthias