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ę?