Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Lenguaje C

strlen() vs. sizeof() en C: Entendiendo sus diferencias y uso correcto

¿Qué es strlen()?

En C, strlen() devuelve el número de caracteres en una cadena terminada en nulo, excluyendo el terminador '\0'. Cuenta caracteres alfabéticos, dígitos, símbolos y espacios.

Este artículo explica el papel de strlen(), sizeof() y por qué se comportan de manera diferente.

¿Qué es sizeof()?

El operador sizeof produce el tamaño, en bytes, de su operando. Se evalúa en tiempo de compilación para tipos estáticos y en tiempo de ejecución para arrays de longitud variable. Se aplica a todos los tipos de datos de C, incluyendo primitivos, punteros, structs y uniones. El resultado es de tipo size_t, un tipo entero sin signo garantizado para ser lo suficientemente grande como para contener el tamaño del objeto más grande.

Dado que el tamaño de tipos como int o double puede variar entre sistemas de 32 y 64 bits, sizeof asegura la portabilidad.

Diferencias clave

Sintaxis de strlen()

size_t length = strlen(my_string);

Aquí, my_string es un array de caracteres o puntero a una cadena terminada en nulo.

Ejemplo de strlen()

#include <stdio.h> #include <string.h> int main() { char strng[] = "January"; printf("Length of given string is: %zu\n", strlen(strng)); return 0; }

Salida:

Length of given string is: 7

Sintaxis de sizeof()

1) sizeof(tipo)

sizeof(tipo) produce el tamaño del tipo especificado.

#include <stdio.h> #define my_sizeof(type) ((char*)(&type+1) - (char*)&type) int main() { double x; printf("%zu", my_sizeof(x)); return 0; }

Salida:

8

2) sizeof(variable)

Pasa un nombre de variable para obtener su huella de memoria.

#include <stdio.h> int main() { printf("sizeof(char) = %zu\n", sizeof(char)); return 0; }

Salida:

sizeof(char) = 1

3) sizeof(expresión)

Evalúa el tamaño del tipo de una expresión sin calcular su valor.

#include <stdio.h> int main() { char p = 'S'; double q = 4.65; printf("Size of variable p : %zu\n", sizeof(p)); printf("Size of an expression : %zu\n", sizeof(p+q)); int a = (int)(p+q); printf("Size of explicitly converted expression : %zu\n", sizeof(a)); return 0; }

Salida:

Size of variable p : 1 Size of an expression : 8 Size of explicitly converted expression : 4

Comparación visual

strlen() vs. sizeof() en C: Entendiendo sus diferencias y uso correcto

A continuación, un resumen lado a lado de los dos constructos.

Característicastrlen()sizeof()
Archivo de cabecerastring.hNo se requiere cabecera (operador integrado)
PropósitoCalcular longitud de cadena (excluyendo nulo)Determinar tamaño de memoria de un tipo o variable
Tipo de retornosize_tsize_t
Momento de evaluaciónTiempo de ejecución (puede recorrer la cadena)Tiempo de compilación (excepto VLA)
Aplicable aSolo arrays de caracteres o punteros a cadenas terminadas en nuloTodos los tipos de datos y expresiones

Cuándo usar cada uno

Seguir estas directrices garantiza código C eficiente, portable y mantenible.

Lenguaje C

  1. Brazing vs. Soldadura Blanda: Diferencias Clave Explicadas
  2. Motor 2 Tiempos vs 4 Tiempos: Diferencias Clave Explicadas
  3. Entendiendo Motores DC vs AC: Diferencias Clave y Guía de Compra
  4. Amianto vs. fibra de vidrio: Diferencias clave, usos y consideraciones de seguridad
  5. Estructuras vs. Uniones en C: Guía práctica
  6. C# vs C++: Comparación clara de características, rendimiento y casos de uso
  7. C vs C++: Diferencias clave y cuándo elegir cada uno
  8. C vs Java: Comparación exhaustiva de características, historia y aplicaciones
  9. Python vs JavaScript: Diferencias Clave, Características y Cuándo Elegir Cada Uno
  10. Python vs Ruby: Comparativa Exhaustiva de Características, Ventajas y Casos de Uso
  11. Python 2 vs Python 3: Diferencias Clave y Cómo Elegir la Versión Correcta