Mi az a memmove() függvény
A C könyvtár függvény memmove() bizonyos számú bájt átmásolására szolgál egyik memóriacímről a másikra. Tekintettel arra, hogy nem érintik az átfedő adatterületek, hatékony és eredményes adatmásolási technika. Használat során memmove() tömb másolásához néhány dolgot szem előtt kell tartani. A függvénynek először két mutatót kell adni, az egyik a forrás memória helyét, a másik pedig a cél memória helyét. Meg kell adni a forrásból a célba másolni kívánt bájtok mennyiségét is.
A memmove() A metódus egy rugalmas funkció, amely képes kezelni az átfedő forrásokat és tetszőleges sorrendben másolni az adatokat a memóriából. Az egyetlen hátránya, hogy egy kicsit tovább tart, mint más másolási módszerek, mint például memcpy().
Hogyan másoljunk tömböket a memmove() segítségével a C programozásban
A memmove() funkciót a
üres * memmove ( üres * Rajt , const üres * src , size_t n ) ;
A mutató void* dest megadja a céltömböt, amelybe a forrástömb tartalma másolódik. A másolni kívánt forrástömbre mutató mutató a const érvénytelen* src . A forrástömbből a céltömbbe másolni kívánt bájtok számát az argumentum határozza meg méret_t n .
Nézze meg például a következő kódsort:
#include
#include
int fő- ( ) {
int forrás_tömb [ ] = { 1 , 2 , 3 , 4 , 5 } ;
int cél_tömb [ 5 ] = { 0 } ;
size_t méret = mérete ( forrás_tömb ) ;
memmove ( cél_tömb , forrás_tömb , méret ) ;
számára ( int én = 0 ; én < 5 ; én ++ ) {
printf ( '%d' , cél_tömb [ én ] ) ;
}
Visszatérés 0 ;
}
A forrástömb és a céltömb tömbjeit először a fenti kód határozza meg. A céltömb kezdetben üres, de a forrástömb 1-től 5-ig terjedő elemekkel rendelkezik mérete() operátort használunk a forrástömb méretének meghatározására, és az eredményt a rendszer a méretváltozóba menti. A forrástömb tartalma átmásolódik a céltömbbe.
Kimenet
Következtetés
A C programozási nyelv hatékony és megbízható módszert kínál a tömbök másolására a memmove() funkció. Sokoldalúsága abból fakad, hogy képes kezelni az átfedő memóriákat, és az egyszerű szintaxis miatt bármely C projekt használhatja.