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?

Antworten auf die Frage(7)

Ihre Antwort auf die Frage