sizeof() y strlen() son dos elementos muy utilizados en C, ambos están relacionados con el cálculo del tamaño de memoria, pero sus funciones son diferentes.
La principal diferencia entre sizeof() y strlen() es:
sizeof()es un operador, mientras questrlen()es una función.sizeof()calcula el número de bytes de memoria que ocupa una variable o tipo, mientras questrlen()calcula el número de caracteres en una cadena.sizeof()puede utilizarse para cualquier tipo de datos, mientras questrlen()solo puede utilizarse para cadenas que terminan en el carácter nulo '\0'.- sizeof() calcula la longitud de la cadena, incluyendo el '\0' final; strlen() calcula la longitud de la cadena, sin incluir el '\0' final.
sizeof() es un operador y no una función, se utiliza para calcular el número de bytes de memoria que ocupa un tipo o variable. Se puede usar para obtener el número de bytes de cualquier tipo de datos, incluidos tipos de datos básicos, arrays, estructuras, uniones, etc.
sizeof()
La forma de uso de sizeof() es la siguiente:
sizeof(type) sizeof(variable)Descripción de parámetros:
- type es un nombre de tipo
- variable es un nombre de variable
Ejemplo
int x;
sizeof(x) // Salida 4, es decir, la variable entera x ocupa 4 bytes
sizeof() calcula la longitud de la cadena, incluyendo el '\0' final
Ejemplo
sizeof(s) // Salida 14, es decir, la cadena s tiene 14 caracteres (incluyendo el carácter nulo final '\0')
strlen()
La función strlen() se utiliza para calcular la longitud de una cadena, es decir, el número de caracteres que contiene (sin incluir el carácter nulo final '\0').
Cabe señalar que la función strlen() solo puede utilizarse para calcular la longitud de cadenas que terminan en el carácter nulo '\0'. Si la cadena no contiene el carácter nulo, el comportamiento de la función strlen() no está definido.
La forma de uso de strlen() es la siguiente:
strlen(string)
Donde string es una cadena que termina en el carácter nulo '\0', pero al calcular la longitud de la cadena, no se incluye el '\0' final. Por ejemplo:
Ejemplo
strlen(s) // Salida 13, es decir, la cadena s tiene 13 caracteres (sin incluir el carácter nulo final '\0')
Ejemplo
A continuación se muestra un ejemplo completo sobre la diferencia entre sizeof() y strlen():
Ejemplo
#include<stdlib.h>
#include<string.h>
void msg()
{
char s[] = "Hello, world!";
printf("s = %s\n", s);
printf("sizeof(s) = %d\n", sizeof(s));
printf("strlen(s) = %d\n", strlen(s));
}
int main(int argc, char* argv[], char* envp[])
{
msg();
return 0;
}
El resultado de salida es:
s = Hello, world! sizeof(s) = 14 strlen(s) = 13