So gibts, du lediglich einen Pointer auf den String, der nach dem Beenden deines Programms sowieso nicht mehr existiert zurück.
Hier mal eine genauere Erklärung:
Unter Windows ruft ein Programm ExitProcess(UINT exitCode) auf wobei exitCode ein 32-Bit Wert ist. Der Rest ist Interpretationssache, diese 32 Bit können eine Ganzzahl, eine Gleitkommazahl oder was auch immer beeinhalten. Aber normalerweise werden diese 32 Bit als Ganzzahl interpretiert und daher hat es keinen Sinn ein float-Wert darein zu packen, obwohl ein float auch 32-Bit sind. Vorallem in einem Batch-Skript wird es kaum möglich sein, was anderes damit zu machen.
Natürlich könntest du auch einen Zeiger auf was auch immer in den 32-Bit ablegen, jedoch kannst du das aus 2 Gründen vergessen:
1. Windows' Speichermodell: Jeder Prozess hat seine eigenen 4 Gigabyte an Speicher, die er addressieren kann, d.h. während 0x400000 bei deinem Programm auf "235.23" zeigen kann, kann in einem anderen Prozess an Stelle 0x400000 "hallo" oder Programmcode oder was auch immer stehen(der Speicher könnte auch noch nicht reserviert sein, was eine AV verursachen würde).
2. Wenn dein Programm beendet wird, wird der Speicher den dein Programm zugeteilt hatte, wieder freigegeben, d.h. der Inhalt ist normalerweise weg.