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.