Memmove() v C a C++

Memmove V C A C



Dnes se naučíme jednu z důležitých funkcí jazyků C a C++, kterou je funkce memmove(). Předtím se však pojďme rychle podívat na základy jazyků C a C++. Probereme také, jaké funkce jsou v obou jazycích C/C++.

Programovací jazyk C je snadný a docela efektivní pro všechny účely. S ním je možná implementace softwaru, jako je operační systém Windows, databáze, interprety a další nástroje. C je skvělý jazyk pro začátečníky, se kterým se mohou naučit kódování. Proto je programování v C známé jako mateřský jazyk, protože slouží jako základ pro všechny ostatní počítačové jazyky. Základ programovacího jazyka C++ je založen na myšlenkách objektově orientovaného programování (OOP). Uživatel může snadno vyvinout a pochopit principy programu, protože C++ má jasnou strukturu. Programovací jazyk C\C++ je výjimečně všestranný při provádění více funkcí a přepínání proměnné z jednoho typu na druhý. Funkce memmove() je jednou z funkcí C/C++.







Funkce memmove() přenáší „num“ bajtů současně z obsahu paměťového bloku, který je označen zdrojem, do umístění označeného cílem. Funkce memmove() je prospěšná pouze v případě, že se zdrojový a cílový objekt překrývají a zabraňuje výskytu nedefinovaného chování. Chcete-li se dozvědět více o funkci memmove(), pojďme se ponořit do hloubky a podívat se, jak implementovat syntaxi a příklady ve funkci memmove().



Syntax:

Zde je stejný styl psaní a implementace funkce memmove() pro jazyky C i C++. Nejprve napíšeme klíčové slovo „void“, což znamená, že pokud funkce nevrací žádnou hodnotu, napíšeme název funkce, kterou chceme implementovat, což je funkce memmove(). Do hranatých závorek funkce zapíšeme cíl, abychom mohli umístit bajty „num“ s klíčovým slovem „void“. Poté zapíšeme zdrojové umístění, odkud získáme „num“ bajtů.







Parametry:

ruka: Adresa úložiště, do kterého jsou data zkopírována.

src: Adresa do úložiště, ze kterého jsou data kopírována.



počet: Množství dat ke kopírování ze zdroje do cíle.

Návratová hodnota:

Na oplátku získáme adresu do cílové oblasti paměti. Cíl je vrácen funkcí memmove().

Příklad 1: Implementace funkce Memmove() v C

Začněme implementovat náš úplně první a jednoduchý příklad jazyka C. Abychom mohli začít psát, potřebujeme nejprve kompilátor C, abychom mohli program napsat a spustit. Za tímto účelem otevřete kompilátor C a začněte implementovat program.

#include
#include <řetězec.h>

int main ( )
{
char ch1 [ ] = { 'L' , 'já' , 'n' , 'v' , 'X' } ;

int délka = sizeof ( ch1 ) / velikost ( ch1 [ 0 ] ) ;

printf ( 'Před použitím funkce memmove(): ' ) ;
pro ( int i = 0 ; i < délka; i++ )
{
printf ( '%C' , ch1 [ i ] ) ;
}

char * ch2 = & ch1 [ dva ] ;
memmove ( ch2, ch1, sizeof ( char ) * dva ) ;

printf ( ' \n \n Po použití funkce memmove(): ' ) ;

pro ( int i = 0 ; i < 5 ; i++ )
{
printf ( '%c' , ch1 [ i ] ) ;
}
vrátit se 0 ;

}


Vždy začínáme začleněním základních programových modulů po spuštění kompilátoru. Tyto moduly jsou přibalené moduly jazyka C. Potřebujeme jednoduše napsat jeden řádek kódu k zahrnutí těchto modulů, na rozdíl od desítek řádků kódu pro konstrukci modulu. Indikátor „#“ informuje překladatele, aby nejprve načetl modul, než použije klíčové slovo „include“ k přidání modulu do programu. Modul „stdio.h“ znamená, že překladač přijímá data od uživatele a zobrazuje je uživateli. Druhým modulem programu je „#include “, abychom mohli používat funkce související s řetězci ve stávajícím programu.

Poté spustíme funkci main(), abychom mohli napsat skutečný řádek kódu, který chceme v programu implementovat. Na řádku 6 deklarujeme název pole znaků „ch1“ typu znak. Poté mu přiřadíme hodnotu znaku. Poté vypočítáme délku „ch1“ a vytiskneme vstupní pole „ch1“ pomocí „smyčky for“.

Poté deklarujeme ukazatel na pole „ch2“ typového znaku a přiřadíme adresu pole „ch1“ poli „ch2“. Poté jej vytiskneme pomocí příkazu printf(). Podívejme se na výstup předchozí ilustrace:

Příklad 2: Implementace funkce Memmove() v C++

Zde je základní příklad, který ukazuje, jak funguje funkce memmove() v jazyce C++. Abychom mohli začít psát, potřebujeme nejprve C++ IDE, abychom mohli program napsat a spustit. Za tímto účelem otevřete kompilátor C++ a začněte implementovat program.

Po otevření kompilátoru vždy začínáme vložením hlavičkových souborů, které jsou nezbytné pro programovací jazyk C++ pro běh programů. Abychom vytvořili program a použili metodu memmove(), nejprve zahrneme dva základní hlavičkové soubory – „iostream“ a „cstring“. C++ poskytuje několik způsobů práce s poli a řetězci. Tyto funkce jsou k dispozici pro použití, když je soubor záhlaví zahrnut v programu se souborem záhlaví „#include  “, který se používá pro kopírování určitého počtu bajtů dat ze zdroje do cíle. Soubor záhlaví „#include “ se používá pro vstup i výstup dat od uživatele. Potom v našem kódu použijeme standardní „namespace std“ k použití standardní syntaxe programovacího jazyka C++, abychom mohli zabránit tomu, aby objekty, metody a parametry odkazovaly na stejný rozsah v celém programu.

#include
#include
pomocí jmenného prostoru std;

int main ( )
{
char src [ padesáti ] = '1234567890' ;
char dest [ padesáti ] = '0987654321' ;

cout << 'Před aplikací memmove to Destination:' << Start << endl;
memmove ( dest, src, 6 ) ;
cout << 'Po použití memmove to Destination:' << ruce

vrátit se 0 ;
}


Začneme psát funkci main(), abychom zahájili provádění skutečného řádku kódu. Na řádku 7 je pole dvouznakového typu o délce 50, které je deklarováno jako „src[50]“ a „dest[50]“. K vytištění zprávy používáme příkaz „cout“ „Před použitím memmove() na cíl: “. Poté předáme parametr „dest“, abychom vytiskli hodnotu pole „dest“. Poté je funkce memmove() aplikována na proměnnou typu znaku deklarovanou jako „src[50]“ a „dest[50]“, aby se překryl určitý počet bajtů od zdroje (src) do cíle (dest) s číslo „počet“. Toto určuje počet bajtů, které jsou zkopírovány z „src“ do „dest“. Jak můžete vidět na následujícím obrázku, deklarovali jsme počet „6“.

Poté znovu použijeme příkaz „cout“ k zobrazení zprávy „Po použití memmove() na cíl: “ a předáme pole proměnné „dest“ typu „character“. Abychom zastavili běh programu, musíme na závěr programu použít příkaz return. Poté vrátíme 0 do hlavní funkce, což znamená, že program byl úspěšně proveden a dosáhl svého cíle.

V následujícím výstupu metody memmove() můžete vidět, že pokud dojde k překrývání, například když se počáteční ukazatel přesune na písmeno 6, ukazatel se nadále tiskne a následující znaky se budou překrývat. Tento fragment kódu C++ byl spuštěn a výsledky jsou zobrazeny na následujícím obrázku:

Závěr

V tomto článku jsme se dozvěděli o funkci memmove() v programovacích jazycích C a C++. Mluvili jsme o tom, jak funguje funkce memmove() na příkladu C a C++ s podrobným vysvětlením každého řádku kódu. Doufáme, že vám tento článek pomůže při rozvíjení znalostí týkajících se funkce memmove() v C a C++.