Float in Byte umwandeln

Du hast nicht verstanden was da gemacht wird. Und dir ist nicht klar wie der Speicher und Zeiger funktionieren.

Ein Zeiger ist eine Adresse auf einen Speicherbereich. In einer Funktion existieren die lokalen Variablen nur auf dem Stack. Der Stack wird nach dem Ende der Funktion wieder zurückgenommen. Entsprechend ist der Speicher dann ungültig.

Dann zu dem hier:

byte* bytes = (byte*)&inFloat;

Hier wird mit & die Adresse von inFloat genommen. Das ist erst mal ein float*. Ein Zeiger auf Float. Den castet man dann auf byte*. Damit wird aber nirgends extra Speicher angelegt. "bytes" ist einfach ein Zeiger auf den Speicher den "inFloat" schon belegt. "bytes" ist einfach ein anderer Weg um "inFloat" anzusprechen. Eben byte-weise und mit mit dem Subscript Operator []. Aber wenn du was bei "bytes" änderst, änderst du direkt "inFloat"

Entsprechend ist das hier völlig sinnfrei:

byte* bigEndian=( byte* ) & retVal;

retVal ist bei dir schon ein byte*. Die Adresse davon wäre dann ein Zeiger auf einen Zeiger. Also ein byte**

Du hast den Code von hier:

Da ist returnVal ein float. Damit hat man schon mal 4 Bytes. Wenn man dann "return returnVal" macht werden die gesamten 4 Bytes zurückgegeben. Nicht wie bei dir nur ein Zeiger auf lokalen Speicher.

Elementare Datentypen kann man anders als Zeiger auf lokale Variablen zurückgeben. Und Arrays sind nur Zeiger auf das erste Element. Entsprechend kann man auch keine lokalen Arrays zurückgeben. Der Standard C Weg ist das Array als Parameter zu übergeben. Einen Zeiger auf ein Array das als Paramter übergeben wurde kann man zurückgeben. Da der Speicher außerhalb der Funktion existiert. Damit kann man die Funktion dann direkt in anderen Funktionen einsetzen.

Ich dachte du wolltest die Daten als Bytes. Daher habe die Variante mit dem Array genommen. Wenn du auch den Float-Wert herumgedreht verarbeiten kannst, kannst es natürlich auch so wie in dem Link machen.

Das ist in C sehr fehleranfällig für Anfänger, da Arrays in ganzes Stück primitiver sind als in vielen anderen modernen Sprachen. In strikt objekt-orientierten Sprachen sind Arrays Objekte. Entsprechend kann man auch ganze Arrays aus Funktionen zurückgeben. In C landet man da schnell auf der Schnauze, da Array Variablen nur Zeiger aus das erste Element sind. Man würde also einen Zeiger auf ungültigen Speicher zurückgeben.