Co je funkce memmove().
Funkce knihovny C memmove() se používá ke zkopírování určitého počtu bajtů z jedné adresy paměti na druhou. Vzhledem k tomu, že není ovlivněn překrývajícími se datovými oblastmi, jde o efektivní a produktivní techniku kopírování dat. Při použití memmove() Chcete-li zkopírovat pole, je třeba mít na paměti několik věcí. Funkce musí nejprve dostat dva ukazatele, z nichž jeden představuje umístění zdrojové paměti a druhý umístění cílové paměti. Musí být také specifikováno množství bajtů, které chcete zkopírovat ze zdroje do cíle.
The memmove() metoda je flexibilní funkce, která dokáže zpracovat překrývající se zdroje a kopírovat data v libovolném pořadí odkudkoli v paměti. Jedinou nevýhodou je, že to trvá o něco déle než jiné metody kopírování memcpy().
Jak kopírovat pole pomocí memmove() v programování C
The memmove() funkce je definována v <řetězec.h> knihovna a má syntaxi:
prázdnota * memmove ( prázdnota * Start , konst prázdnota * src , velikost_t n ) ;
Ukazatel prázdno* cíl určuje cílové pole, do kterého bude zkopírován obsah zdrojového pole. Ukazatel na zdrojové pole, které chceme zkopírovat, je const neplatný* src . Počet bajtů, které chceme zkopírovat ze zdrojového pole do cílového pole, je určen argumentem velikost_t n .
Podívejte se například na následující řádek kódu:
#include
#include <řetězec.h>
int hlavní ( ) {
int zdrojové_pole [ ] = { 1 , 2 , 3 , 4 , 5 } ;
int cílové_pole [ 5 ] = { 0 } ;
velikost_t velikost = velikost ( zdrojové_pole ) ;
memmove ( cílové_pole , zdrojové_pole , velikost ) ;
pro ( int i = 0 ; i < 5 ; i ++ ) {
printf ( '%d' , cílové_pole [ i ] ) ;
}
vrátit se 0 ;
}
Zdrojové pole a cílové pole jsou nejprve definovány v kódu výše. Cílové pole je zpočátku prázdné, ale zdrojové pole má prvky 1 až 5. The velikost() operátor se pak použije k určení velikosti zdrojového pole a výsledek se uloží do proměnné size. Obsah zdrojového pole se zkopíruje do cílového pole.
Výstup
Závěr
Programovací jazyk C nabízí efektivní a spolehlivý způsob kopírování polí pomocí rozhraní memmove() funkce. Jeho všestrannost vychází z jeho schopnosti zvládnout překrývající se paměť a díky jeho přímočaré syntaxi jej může použít jakýkoli projekt v jazyce C.