На данный вопрос уже ответили:
Пишу программу на с++, в классе есть метод, который вычисляет размер выделенной указателем строки в байтах. Поскольку sizeof вычисляет размер только указателя, пришлось сделать так
int size = (strlen(str) + 1) * sizeof(char);//тут размер строки с нуль символом
Собственно сам вопрос, может ли считаться нуль-терминатор за байт? Ведь насколько я знаю, все его биты равны нулю, а значит он не весит ничего, но в строке он присутствует за байт как факт. На разных форумах, объясняют по разному. Развейте плс сомнения.
P.S А так же есть тот факт, что нам приходится выделять под указатель на 1 символ больше, под нуль-символ, т.е мы выделяем еще 1 тип char который весит байт.
Если я не правильно рассуждаю, поправьте пж)
Судя по вашему "все его биты равны нулю, а значит он не весит ничего", число 5 - 101 - должно занимать только 2 бита, и только 255 - целый байт, ибо оно равно 11111111...
Величина значения с его размером связаны только в том смысле, что размер определяет диапазон представимых значений. Байт (стандартный, 8-битовый) - это значения от 0 до 255. А какое именно там число - это не играет роли.
Когда вы рассматриваете массив char
- то нулевой символ имеет размер этого char
, а уж каков его размер в байтах - зависит от конкретной реализации. Говорят, есть машины, где один символ - это целых 4 байта, и там этот нулевой символ - все 4 байта полностью...
Словом, это реальный элемент массива, который представляет строку.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Нужно распарсить строку, для этого необходимо найти позицию знака
В связи с сложностями которые возникают в связи с импортом классов при явном подключении DLL (с помощью winapi), стоит ли его использовать, есть...