Является ли нуль-терминатор байтом? [дубликат]

145
09 марта 2018, 15:19

На данный вопрос уже ответили:

  • Кто-нибудь встречал в своей практике sizeof(char) != 1? 5 ответов

Пишу программу на с++, в классе есть метод, который вычисляет размер выделенной указателем строки в байтах. Поскольку sizeof вычисляет размер только указателя, пришлось сделать так

int size = (strlen(str) + 1) * sizeof(char);//тут размер строки с нуль символом

Собственно сам вопрос, может ли считаться нуль-терминатор за байт? Ведь насколько я знаю, все его биты равны нулю, а значит он не весит ничего, но в строке он присутствует за байт как факт. На разных форумах, объясняют по разному. Развейте плс сомнения.

P.S А так же есть тот факт, что нам приходится выделять под указатель на 1 символ больше, под нуль-символ, т.е мы выделяем еще 1 тип char который весит байт.

Если я не правильно рассуждаю, поправьте пж)

Answer 1

Судя по вашему "все его биты равны нулю, а значит он не весит ничего", число 5 - 101 - должно занимать только 2 бита, и только 255 - целый байт, ибо оно равно 11111111...

Величина значения с его размером связаны только в том смысле, что размер определяет диапазон представимых значений. Байт (стандартный, 8-битовый) - это значения от 0 до 255. А какое именно там число - это не играет роли.

Когда вы рассматриваете массив char - то нулевой символ имеет размер этого char, а уж каков его размер в байтах - зависит от конкретной реализации. Говорят, есть машины, где один символ - это целых 4 байта, и там этот нулевой символ - все 4 байта полностью...

Словом, это реальный элемент массива, который представляет строку.

READ ALSO
Ошибка. Проблема в коде или в среде?

Ошибка. Проблема в коде или в среде?

Ошибка: maincpp|10|error: expected ')' before 'st'

156
C++ std::string::find неверно работает

C++ std::string::find неверно работает

Нужно распарсить строку, для этого необходимо найти позицию знака

153
Видоизменение имен функциий

Видоизменение имен функциий

Для чего компиляторы C++ "манглят" имена функций

128
Явная загрузка DLL

Явная загрузка DLL

В связи с сложностями которые возникают в связи с импортом классов при явном подключении DLL (с помощью winapi), стоит ли его использовать, есть...

122