Я читаю некоторые коды, где иногда происходит преобразование целочисленного ссылочного значения в const char *, используемое с ostream.
uint32_t val;// initialized by some value
void a(ostream& os) const{
os.write((const char*)&val, sizeof(val));
}
1) Как влияет приведение целочисленного ссылочного типа на (const char *) ??
2) и то же самое ли использовать (char *)&val как использовать (const char *) ??
2 *) Если нет, то какая разница ??
char *
а также const char *
разные типы. char *
это указатель на символ и const char *
указатель на символ, который нельзя изменить с помощью указателя
В вашем примере (const char*)&val
возьму адрес val
и обрабатывать это как указатель на символ, данные которого нельзя изменить. Это гарантирует, что write
функция не изменяет данные (а просто записывает их в другое место). Переходя (char*)&val
как параметр не гарантирует этого. write
может затем перезаписать ваш val
,
Других решений пока нет …