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