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

243
Vistas
¿Por qué `memmove` usa `void *` como parámetro en lugar de `char *`?

La definición de la función memmove de la biblioteca c es como la siguiente:

 void* memmove(void *s1, const void *s2, size_t n) { char *sc1; const char *sc2; sc1 = s1; sc2 = s2; ... }

Me pregunto por qué necesitamos usar void* y const void* como tipo de parámetros. ¿Por qué no directamente char* y const char* ?

actualizar

 int test_case[] = {1, 2, 3, 4, 5, 6, 7, 8, 10}; memmove(test_case+4, test_case+2, sizeof(int)*4);

Salida: test_case = {1, 2, 3, 4, 3, 4, 5, 6, 10}

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

0

Si se usan char* y const char* , siempre tenemos que convertir a char* al invocar memmove en otros tipos.

Al usar void* y const void* , podemos escribir código más corto y la conversión no tiene sobrecarga de rendimiento.

over 4 years ago · Santiago Trujillo Denunciar

0

void * es el tipo de puntero genérico. Se supone que memmove manipula la memoria independientemente del tipo de objetos que haya en la memoria.

Del mismo modo para memcpy . Compárelo con strcpy que usa parámetros char * porque se supone que manipula cadenas.

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