mikrocontroller.net

Forum: Compiler & IDEs einfache Frage zur Syntax


Autor: Jan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich haben keine Ahnung von C und eine (sicher einfache) Frage:
ich soll einen Pointer angeben und habe folgende beiden Möglichkeiten:

1. ptr
2. *(ptr)

Kann mir bitte jemand sagen was da der Unterschied ist?!
So auf ASM Level!
Ich vermute, bei 1. steht in PTR die Adresse auf die ich zugreife.
Was aber ist bei 2.?

btw:
die Sachen mit ptr++ etc. sind mir schon klar geworden.
Mühsahm, wenn man sich da einarbeiten muss.

Danke
Jan

Autor: Lars R. (larsr)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Bei Variante zwei wird auf den Wert zugegriffen, der an der Adresse des 
Zeigers hinterlegt ist.

Viele Grüße,

Lars

Autor: Jan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Verstanden, vielen Dank Lars!

für mich leider (noch) sehr kryptisch -
die Kürze hat aber schon ihren Reiz, wie bei *(ptr++):
schnell geschrieben und erledigt trotzdem gleichzeitig einige Aktionen 
:-)

Nochmals Besten Dank!
Jan

Autor: Lars R. (larsr)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jan,

> für mich leider (noch) sehr kryptisch -

Das ist nur eine Frage der Gewohnheit...

> die Kürze hat aber schon ihren Reiz, wie bei *(ptr++):
> schnell geschrieben und erledigt trotzdem gleichzeitig einige Aktionen

Lass die Klammern weg, dann wird es noch kürzer! (Allerdings wird dann 
nach dem Zugriff auf den Wert erhöht.)

Viele Grüße,

Lars

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lars R. schrieb:

> Lass die Klammern weg, dann wird es noch kürzer! (Allerdings wird dann
> nach dem Zugriff auf den Wert erhöht.)

Auch mit Klammer wird der Pointer erst nach dem Zugriff inkrementiert.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wann der Pointer inkrementiert wird, ist nicht festgelegt.

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rolf Magnus schrieb:
> Wann der Pointer inkrementiert wird, ist nicht festgelegt.

Ok, wenn du denn unbedingt den Kleinlichen spielen musst, dann 
formuliere ich es eben um:
Für die Dereferenzierung wird auf jeden Fall der nicht inkrementierte 
Wert des Pointers verwendet, egal ob mit oder ohne Klammer.

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.