Byte aus Array auslesen, Welches durch Zeiger + Zeichennummer übergeben wird

Sei doch froh, daß Du Dich am Arduino nicht mit Segmenten und Offsets und Registern herumschlagen mußt, und stattdessen leserlichen C oder C++ Code schreiben kannst. Segmentregister gibt es bei den Arduinos nicht, die werden auch bei den Intel Prozessoren schon lange nicht mehr verwendet.

Wo Du beim x86 Assembler DS:[BX+2*AX] schreiben mußtest, geht das in C mit MyArray[ax]. Da steht MyArray für DS:BX, und ax hier nicht für den Offset, sondern die Nummer (Index) des Elements. Bei Bytes macht das keinen Unterschied zwischen Index und Offset, aber bei einem int Array muß man den Index mit 2 multiplizieren (Anzahl Bytes pro Element), um den richtigen Offset zu bekommen. Und diese Rechnerei macht der Compiler für Dich, und erzeugt auch noch die richtigen Befehle für das Übertragen der zusammengehörenden Bytes eines Elements.

Und weil sich das Hantieren mit Adressen als sehr fehleranfällig erwiesen hat (Pufferüberlauf...), wurden in C++ noch Referenzen eingeführt. Sie haben die gleiche Funktion wie Pointer, enthalten also Adressen, nur sind Referenzen nicht änderbar, und können auch nicht NULL (ungültig) sein. Also vergiß Pointer und Adressen, und verwende stattdessen Arrays und Indices. Dann hast Du den ersten Schritt vom Byteschubser zum Programmierer geschafft :slight_smile: