La définition de la fonction de bibliothèque c memmove
est comme ce qui suit:Pourquoi `memmove` utilise` void * `comme paramètre au lieu de` char * `?
void* memmove(void *s1, const void *s2, size_t n)
{
char *sc1;
const char *sc2;
sc1 = s1;
sc2 = s2;
...
}
Je me demande pourquoi avons-nous besoin d'utiliser comme type de paramètres void*
et const void*
. Pourquoi ne pas directement char*
et const char*
?
mise à jour
int test_case[] = {1, 2, 3, 4, 5, 6, 7, 8, 10};
memmove(test_case+4, test_case+2, sizeof(int)*4);
sortie: test_case = {1, 2, 3, 4, 3, 4, 5, 6, 10}
Parce que ce n'est pas une fonction de chaîne mais une fonction de mémoire; l'utilisation de 'void *' le fait fonctionner avec n'importe quel type de pointeur et pas avec ceux de 'char *'. – Jack