Подтвердить что ты не робот

Разница между sizeof и strlen в c

Возможный дубликат:
Различные ответы от strlen и sizeof для инициализации строки с указателем и массивом

Может ли кто-нибудь помочь мне понять разницу между методом sizeof и strlen в программировании c?

4b9b3361

Ответ 1

strlen() используется для получения длины массива символов/строки.

sizeof() используется для получения фактического размера любого типа данных в байтах.

Кроме того, sizeof() - это выражение времени компиляции, дающее вам размер типа или типа переменной. Он не заботится о значении переменной.

strlen() - это функция, которая принимает указатель на символ и перемещает память от этого символа, ища символ NULL. Он подсчитывает количество символов до того, как найдет символ NULL. Другими словами, он дает длину строки с NULL-концами C-стиля.

Оба они почти разные. В С++ вам не нужно слишком много, strlen() для строк C-стиля, который должен быть заменен С++-style std::strings, тогда как основное приложение для sizeof() в C является аргументом для таких функций, как malloc(), memcpy() или memset(), которые вы не должны использовать в С++ (используйте новые, std::copy() и std::fill() или constructors).

Ответ 2

sizeof не является методом. Это конструкция времени компиляции, которая определяет объем памяти определенного типа или переменной. strlen, с другой стороны, является функцией, которая подсчитывает количество последовательных ненулевых значений char, начиная с указанного места в памяти (что бывает так же, как определение длины строки C с нулевым завершением).