vektor als char* ausgeben ???
-
Hi, ich bin gerade beim recherchieren über was seltsames gestoßen, was mir ein bißchen unverständlich ist. Der zeiger 's' zeigt auf den anfang des arrays, ok aber der rest sind bömische dörfer, da ja der index nicht mehr verwendet wird????
Warum/Wie funktioniert das (Was hat es mit dem binären-und auf sich)?
char* blVector3::toString(){ static int index = 0; static char str[8][36]; char* s; s = str[index]; index = (index+1)&7; // <<< Unklar sprintf(s,"%.2f %.2f %.2f",x,y,z); return s; }Man möge mir meine unkenntnis verzeihen

Danke schonmal für die hilfe...
-
Da wird die statische Variable 'index' um 1 erhöht und dann alle Bits bis auf den ersten 3 abgeschnitten. Das heißt, dass 'index' zwischen 0 und 7 bleibt. Es werden also reihum Zeiger auf alle String-Elemente von 'str' zurückgegeben. Das könnte dafür gedacht sein, bis zu 8 Vektoren umzuwandeln, ohne sich um Speicher Sorgen zu machen, während alle 8 Strings nutzbar bleiben.
-
Ich habs jetzt einfach mal rauschgeschmissen und siehe da es geht auch

Danke nochmal...
-
addicted_to_c schrieb:
Ich habs jetzt einfach mal rauschgeschmissen und siehe da es geht auch

Danke nochmal...Naja, beim 9. Aufruf ist das undefiniertes Verhalten.
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.