Čo je funkcia memmove().
Funkcia knižnice C memmove() sa používa na kopírovanie určitého počtu bajtov z jednej adresy pamäte na druhú. Vzhľadom na to, že nie je ovplyvnený prekrývajúcimi sa oblasťami údajov, je to efektívna a produktívna technika kopírovania údajov. Pri použití memmove() Ak chcete skopírovať pole, je potrebné mať na pamäti niekoľko vecí. Funkcia musí najprv dostať dva ukazovatele, jeden predstavuje umiestnenie zdrojovej pamäte a druhý miesto cieľovej pamäte. Musí byť špecifikované aj množstvo bajtov, ktoré chcete skopírovať zo zdroja do cieľa.
The memmove() metóda je flexibilná funkcia, ktorá dokáže spracovať prekrývajúce sa zdroje a kopírovať dáta v ľubovoľnom poradí odkiaľkoľvek v pamäti. Jedinou nevýhodou je, že to trvá trochu dlhšie ako iné spôsoby kopírovania, ako sú memcpy().
Ako kopírovať polia pomocou memmove() v programovaní C
The memmove() funkcia je definovaná v
neplatné * memmove ( neplatné * začať , konšt neplatné * src , size_t n ) ;
Ukazovateľ void* dest určuje cieľové pole, do ktorého sa skopíruje obsah zdrojového poľa. Ukazovateľ na zdrojové pole, ktoré chceme skopírovať, je const void* src . Počet bajtov, ktoré chceme skopírovať zo zdrojového poľa do cieľového poľa, je určený argumentom size_t n .
Pozrite sa napríklad na nasledujúci riadok kódu:
#include
#include
int Hlavná ( ) {
int source_array [ ] = { 1 , 2 , 3 , 4 , 5 } ;
int cieľové_pole [ 5 ] = { 0 } ;
size_t veľkosť = veľkosť ( source_array ) ;
memmove ( cieľové_pole , source_array , veľkosť ) ;
pre ( int i = 0 ; i < 5 ; i ++ ) {
printf ( '%d' , cieľové_pole [ i ] ) ;
}
vrátiť 0 ;
}
Zdrojové pole a cieľové pole sú najskôr definované v kóde vyššie. Cieľové pole je spočiatku prázdne, ale zdrojové pole má prvky 1 až 5. The veľkosť() Operátor sa potom použije na určenie veľkosti zdrojového poľa a výsledok sa uloží do premennej size. Obsah zdrojového poľa sa skopíruje do cieľového poľa.
Výkon
Záver
Programovací jazyk C ponúka efektívny a spoľahlivý spôsob kopírovania polí pomocou memmove() funkciu. Jeho všestrannosť pochádza z jeho schopnosti zvládnuť prekrývajúcu sa pamäť a vďaka jeho priamej syntaxi ho môže použiť každý projekt v jazyku C.