Sizeof operator is a compile time unary operator which can be used to compute the size of its operand.
- The result of sizeof is of unsigned integral type which is usually denoted by size_t.
- sizeof can be applied to any data-type, including primitive types such as integer and floating-point types, pointer types, or compound datatypes such as Structure, union etc.
strlen() is a predefined function in C whose definition is contained in the header file “string.h”.
- strlen() accepts a pointer to an array as argument and walks through memory at run time from the address we give it looking for a NULL character and counts up how many memory locations it passed before it finds one.
- The main task of strlen() is to count the length of an array or string.
sizeof vs strlen()
- Type: Sizeof operator is a unary operator whereas strlen() is a predefined function in C
- Data types supported: Sizeof gives actual size of any type of data (allocated) in bytes (including the null values) whereas get the length of an array of chars/string.
- Evaluation size: sizeof() is a compile-time expression giving you the size of a type or a variable’s type. It doesn’t care about the value of the variable.
Strlen on the other hand, gives you the length of a C-style NULL-terminated string.
- Summary: The two are almost different concepts and used for different purposes.
- In context of C++: In C++, you do not need any of them as such.
strlen() in C-style strings can be replaced by C++ std::strings.
sizeof() in C is as an argument to functions like malloc(), memcpy() or memset() can be replaced by C++ (use new, std::copy(), and std::fill() or constructors).
Length of String is 8 Size of String is 9
Since size of char in C is 1 byte but then also we find that strlen() gave one less value than sizeof().
Explanation : We know, that every string terminates with a NULL character (“