Wann und wie ist die Konvertierung in einen Zeichenzeiger zulässig?
Wir können uns die Darstellung eines Objekts vom Typ ansehenT
durch Konvertieren von aT*
das zeigt auf das Objekt in einechar*
. Zumindest in der Praxis:
int x = 511;
unsigned char* cp = (unsigned char*)&x;
std::cout << std::hex << std::setfill('0');
for (int i = 0; i < sizeof(int); i++) {
std::cout << std::setw(2) << (int)cp[i] << ' ';
}
Dies gibt die Darstellung von aus511
auf meinem System:ff 01 00 00
.
Hier tritt (mit Sicherheit) ein implementierungsspezifisches Verhalten auf. Welche der Besetzungen erlaubt es mir, eine zu konvertieren?int*
zu einemunsigned char*
und welche umwandlungen bringt die besetzung mit sich? Rufe ich undefiniertes Verhalten auf, sobald ich eine Besetzung mache? Kann ich welche besetzen?T*
so tippen? Worauf kann ich mich dabei verlassen?