Forum: Compiler & IDEs Wert an Adresse schreiben


von Tom (Gast)


Lesenswert?

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.

von Dussel (Gast)


Lesenswert?

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.

von Dussel (Gast)


Lesenswert?

Ganz so einfach scheint es doch nicht zu sein. Mein Compiler zeigt mir 
einen Fehler an. Anscheinend kann man nicht so einfach Adressen 
zuweisen.

von Peter (Gast)


Lesenswert?

Dussel schrieb:
> Mein Compiler zeigt mir einen Fehler an.
und welchen?

von Dussel (Gast)


Lesenswert?

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.

von Dussel (Gast)


Lesenswert?

Ach, es ist 'int*'

von df1as (Gast)


Lesenswert?

Es sollte auch ohne explizit definiertem Zeiger gehen:

*((int*) 0x4223) = 0x42;

von df1as (Gast)


Lesenswert?

Oder besser (da Adresse ungerade):

*((char*) 0x4223) = 0x42;

von Dussel (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.