11.5. Copie d'un tableau : for ou memmove

Icône de l'outil pédagogique Copie d'un tableau : for ou memmove

 

Le nom d'un tableau représente son adresse (celle du premier élément). Il n'est donc pas possible de réaliser des affectations ou des copies de tableaux par l'écriture :

tab2 = tab1; écriture interdite, car sans signification !

C'est pourquoi on réalise souvent l'affectation ou la copie élément par élément :

for (i=0 ; i<N ; i++) tab_dest[i] = tab_srce[i] ;
Une solution plus rapide et élégante utilise la fonction de recopie mémoire memmove :
memmove ( tab_dest, tab_srce, sizeof(tab_srce) ) ; 

Le mode d'emploi de memmove, qui peut être utilisée pour copier n'importe quel bloc d'octets (et pas seulement un tableau), est le suivant :

memmove ( adresse_destination, adresse_source, nombre_d'octet_a_copier ) ;

L'utilisation de l'opérateur sizeof pour calculer le nombre d'octets à copier est en général indispensable :

sizeof(tab) fournit la taille en octets d'un tableau
n*sizeof(double) fournit le nombre d'octets occupés par n cases mémoire de type double.

Exemple 58 : Copie d'un petit tableau dans un gros (memmove, sizeof)