c ++ 11 — Как влияет приведение целочисленного ссылочного значения к (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 *) Если нет, то какая разница ??

0

Решение

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

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

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector