Каков эффект приведения целочисленного ссылочного значения к (const char*) и в чем разница между приведением к char * и приведением к const char * в C++?

Я читаю некоторые коды, где иногда происходит преобразование целочисленного ссылочного значения в 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 *) Если нет, то какая разница??

1 ответ

char * а также const char * разные типы. char * это указатель на символ и const char * указатель на символ, который нельзя изменить с помощью указателя

В вашем примере (const char*)&val возьму адрес val и обрабатывать это как указатель на символ, данные которого нельзя изменить. Это гарантирует, что write функция не изменяет данные (а просто записывает их в другое место). Переходя (char*)&val как параметр не гарантирует этого. write может затем перезаписать ваш val,

Другие вопросы по тегам