Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

330
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda