Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

329
Vistas
¿Por qué memchr() toma un puntero vacío como entrada?

Actualmente estoy reprogramando algunas bibliotecas C. Entonces mi pregunta es: ¿Por qué memchr toma un puntero const void *s y no simplemente un puntero de carácter?

Veo que probablemente podría buscar otras cosas, pero la función se llama literalmente memchr , entonces, ¿por qué usar un puntero vacío?

¡Gracias por adelantado!

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

El desarrollo temprano de C involucró una buena cantidad de tratar las cosas como bytes individuales y permitir a los programadores acceder a los bytes que representaban objetos. El nombre memchr refleja esa historia y no se puede cambiar fácilmente ahora.

void se agregó al lenguaje para proporcionar un tipo que representa, en cierto sentido, "algo está ahí, pero esto es flexible". El primer parámetro de memchr tiene el tipo const void * porque la rutina se puede usar para buscar un byte en cualquier tipo de objeto, no necesariamente en un objeto que es principalmente una matriz de caracteres.

over 4 years ago · Santiago Trujillo Denunciar

0

Es la misma razón por la que otras funciones declaradas en string.h usan void* : para evitar una conversión.

Tal vez tengas razón, el nombre es engañoso, especialmente considerando que es parte de string.h . Por otra parte, también lo es memmove , memcmp , memset , etc...

over 4 years ago · Santiago Trujillo Denunciar

0

Antes de que se introdujera el tipo de datos void en el estándar de 1989 ( -std=c89 ), funciones como memchr() solían tomar const char * , porque era lo más parecido a un puntero genérico en ese momento.

Si const char * estuvo presente hoy, deberá convertir de x * a const char * .

También puedes entender esto usando analogía:

  • strcpy() -> copia de cadena
  • memcpy() -> copia de memoria (binaria)
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda