www.mikrocontroller.net

Forum: Compiler & IDEs Wert an Adresse schreiben


Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dussel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich denke mal, das geht über einen Zeiger.
Wenn mich nicht alles täuscht ist das
int *Adresse;
Adresse=4223; //oder 0x4223
*Adresse=0x42;
Das könnte aber Probleme geben, wenn der Compiler die Adresse selber 
benutzt. Dann werden die Werte immer wieder überschrieben.

Autor: Dussel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dussel schrieb:
> Mein Compiler zeigt mir einen Fehler an.
und welchen?

Autor: Dussel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dussel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach, es ist 'int*'

Autor: df1as (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es sollte auch ohne explizit definiertem Zeiger gehen:

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

Autor: df1as (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder besser (da Adresse ungerade):

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

Autor: Dussel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.