Kiedy i jak dozwolone jest konwersja na wskaźnik char?

Możemy spojrzeć na reprezentację obiektu typuT przez konwersję aT* to wskazuje na ten obiekt nachar*. Przynajmniej w praktyce:

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] << ' ';
}

To wyświetla reprezentację511 w moim systemie:ff 01 00 00.

Występuje tu (z pewnością) pewne zdefiniowane zachowanie. Który z rzutów pozwala mi na konwersjęint* dounsigned char* i jakie konwersje pociąga za sobą ten rzut? Czy przywołuję niezdefiniowane zachowanie? Czy mogę rzucić dowolneT* typ jak ten? Na czym mogę polegać, kiedy to robię?

questionAnswers(7)

yourAnswerToTheQuestion