Hallo! Ich habe ein kleines Problem mit dem Verständnis: Ich möchte einen Wert (z.B. 0x42) direkt an eine Adresse (z.B. 0x4223) schreiben. Wie sieht der Syntax dazu in C aus? Ich benutze GCC für ARM.
Ich denke mal, das geht über einen Zeiger. Wenn mich nicht alles täuscht ist das
1 | int *Adresse; |
2 | Adresse=4223; //oder 0x4223 |
3 | *Adresse=0x42; |
Das könnte aber Probleme geben, wenn der Compiler die Adresse selber benutzt. Dann werden die Werte immer wieder überschrieben.
Ganz so einfach scheint es doch nicht zu sein. Mein Compiler zeigt mir einen Fehler an. Anscheinend kann man nicht so einfach Adressen zuweisen.
invalid conversion from 'unsigned int' to '*int' Anscheinend müsste ich dem irgendwie mitteilen, dass das eine Adresse sein soll. Jetzt sieht er es als einfach Zahl, die natürlich nicht einem Adresstyp zugewiesen werden kann.
Es sollte auch ohne explizit definiertem Zeiger gehen: *((int*) 0x4223) = 0x42;
Um meine Version noch zu retten: Die Adresse muss als Adresse gecastet werden, also Adresse=(int*)0x4223; Also das Gleiche, was in den anderen Vorschlägen gezeigt wurde.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.