Description des paramètres pour memcpy
de la documentation:
void * memcpy (void * destination, const void * source, size_t num);
destination
: pointeur vers le tableau de destination où vous souhaitez copier le contenu, le type -casté à un pointeur de type void *.
source
: Pointeur vers la source de données à copier, casté vers un pointeur de type const void *.
num
: Nombre d'octets à copier. taille_t est un type intégral non signé.
memcpy
prend simplement num
octets à partir de l'adresse source
et les copie à partir de l'adresse mémoire destination
. Un pointeur est une adresse de mémoire de longueur fixe, quel que soit le type. Peu importe si le pointeur est char *
(pointe vers des données de caractère), int *
(pointe vers des données entières) ou void *
(pointe vers des données de type inconnu), il pointe toujours juste vers la mémoire.
Étant donné que memcpy
copie un nombre explicite d'octets, le type de données pointé sur n'est pas pertinent; il a juste besoin d'adresses mémoire pour les données.
Oui cela fonctionne. Il se comporte de la même manière que les pointeurs de caractères en boucle sur ce nombre d'octets. –
Pourquoi pensez-vous que cela ne fonctionnerait pas étant donné que 'memcpy' est défini pour accepter les pointeurs de vide? – kaylum
Faites un essai. Si cela ne fonctionne pas, vous vous attendez à ce que cela fonctionne, revenez à SO avec un [mcve]. –