Pointer Addition Atmel

Gast #2912068
Lesenswert?
• ▲
▼
Hallo!
Ich muss nen AtMega in C Programmieren und bin aus der ganzen Syntax 
etwas raus... Ich wollte fragen, ob folgende Operation geht:

uint8_t *a;
uint8_t b;

b=*(a +3-12*4);

Geht das mit dem "+3-12*4" oder schlicht irgendein anderer 
mathematischer Ausdruck in der Pointerklammer?

Ich habs gerade etwas schwer dies auszuprobieren...

Vielen Dank,
Gilles
#2912119
Lesenswert?
• ▲
▼
Gilles schrieb:

> Ich muss nen AtMega in C Programmieren und bin aus der ganzen Syntax
> etwas raus... Ich wollte fragen, ob folgende Operation geht:
>
> uint8_t *a;
> uint8_t b;
>
> b=*(a +3-12*4);

Gehen wird das sicher, weil Zeiger am Ende ja auch nur Zahlen sind. 
Aber: es ist ganz schlechter Stil, weswegen C-Compiler nach K&R die 
meisten arithmetischen Konstrukte mit Zeigern mittlerweile mit Warnungen 
quittieren.

Abgesehen davon ist solcher Code meistens auch noch ganz schlecht les- 
und mithin wartbar. Und last not least: in 99.9% der Fälle vollkommen 
unnötig. Der wesentliche Grund für die Verwendung von Hochsprachen ist 
ja, den Programmcode leichter lesbar zu machen. Darum gibt es Strukturen 
und Arrays, mit denen man Elemente schön lesbar adressieren kann ohne 
dazu händisch Pointer-Arithmetik betreiben zu müssen.


XL

PS: auf µC halte ich die Verwendung derartiger Konstrukte für noch 
verwerflicher als bspw. auf PC. Während letztere ein Laufzeitsystem 
haben, das Zugriffe über ungültige Pointer mit einer gewissen 
Wahrscheinlichkeit erkennen und die Reißleine ziehen kann, haben µC 
nichts derartiges. Da rennt das Programm dann einfach mit Müll weiter 
und macht sonstwas.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.