Когда и как разрешено преобразование в указатель на символ?
Мы можем посмотреть на представление объекта типаT
путем преобразованияT*
который указывает на этот объект вchar*
, По крайней мере, на практике:
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] << ' ';
}
Это выводит представление511
в моей системе:ff 01 00 00
.
Здесь (несомненно) определено поведение, определяемое реализацией. Какой из приведений позволяет мне преобразоватьint*
чтобыunsigned char*
и какие преобразования это влечет за собой? Я вызываю неопределенное поведение, как только произнесу? Могу ли я бросить любойT*
типа как это? На что я могу положиться при этом?