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

Steht doch genau da was falsch ist:

warning: address of local variable 'pointer' returned [-Wreturn-local-addr]

Du gibst die Adresse einer lokalen Variable zurück. Du übergibst ein Byte als Parameter und & ist die Adresse davon. Was genau das Gegenteil ist was du eigentlich tun willst

Das wird auch davon kommen:

warning: invalid conversion from 'const byte* {aka const unsigned char*}' to 'uint16_t {aka unsigned int}' [-fpermissive]

Adressen sind 16 Bit und die machst einen impliziten Cast auf Byte