C Programovanie

Ako používať funkciu memcpy v jazyku C?

Ako používať funkciu memcpy v jazyku C?
V jazyku C sa funkcia memcpy () používa na kopírovanie bloku pamäte z jedného miesta na druhé. V tomto článku sa budeme podrobne zaoberať tým, ako sa používa funkcia memcpy (). Takže poďme na to.

Hlavičkový súbor:

struna.h

Syntax:

void * mempcpy (void * dest, const void * src, size_t size)

Argumenty:

Funkcia má 3 argumenty:

  1. cieľ:
  2. Toto je počiatočný ukazovateľ pamäťového bloku, kde je pamäťový blok označený src (2. argument) sa skopíruje. Ukazovateľ je vyhlásený za neplatný, takže je možné kopírovať akýkoľvek typ pamäťového bloku.

  3. src:
  4. Toto je počiatočný ukazovateľ bloku zdrojovej pamäte, odkiaľ sa bude kopírovať blok pamäte. Ukazovateľ je vyhlásený za neplatný, takže je možné kopírovať akýkoľvek typ pamäťového bloku.

  5. veľkosť:
  6. Toto je veľkosť bloku pamäte v bajtoch.

Hodnota ukazovateľa dva cieľ a src by malo byť také, aby sa dva pamäťové bloky neprekrývali. Veľkosť pamäťových blokov zdroja a cieľa musí byť minimálne veľkosť (3. argument) bajtov, aby sa zabránilo prekrývaniu situácií. Ak sa dva pamäťové bloky prekrývajú, potom sa chovanie memcpy () funkcia nie je definovaná. Ak existuje možnosť prekrytia, môžete použiť memmove () funkcia knižnice, kde je dobre definované prekrývanie. memmove () funkcia je pomalšia v porovnaní s memcpy () funkcia.

Z dôvodu hodnoty veľkosť, ak je zdroj alebo cieľ prístupný nad rámec ich dĺžky vyrovnávacej pamäte, potom sa správanie servera memcpy () funkcia nie je definovaná.

The memcpy () funkcia nekontroluje ukončenie znaku „\ 0“.

Návratové hodnoty:

Táto funkcia vracia hodnotu cieľovej adresy cieľ. Ako hodnota cieľ je už k dispozícii, takže sa nemusí ukladať do žiadnej premennej.

Príklady:

// Príklad1.c
#include
#include
int main ()

char src [] = "Dobrý deň";
char dest [13];
memcpy (dest, src, 6);
printf ("cieľ po prvom memcpy () =>% s \ n", cieľ);
memcpy (dest + sizeof (src) -1, "svet!", 8);
printf ("cieľ za druhou memcpy () =>% s \ n", cieľ);
návrat 0;

V príklade 1.c deklarovali sme dvojznakové pole src a cieľ. Veľkosť src je 6 a cieľ je 13. Najskôr sme skopírovali 6 znakov „H“, „e“, „l“, „l“, „o“, „\ 0“ z src do cieľ (Riadok 11). V druhej funkcii memcpy () bolo skopírovaných 8 znakov ", 'w', 'o', 'r', 'l', 'd', '!',' \ 0 'do cieľa po 5 znakoch (riadok 15). Obrázkovo to môžeme znázorniť takto:

// Príklad2.c
#include
#include
int main ()

typedef struct študent

char * meno;
int id;
int vek;
std;
std student1; // Deklarovať študent1 štandardného typu
std student2; // Deklarovať student2 typu std
// Priradenie hodnoty sudent1
študent1.name = "Bamdev Ghosh";
študent1.id = 1105;
študent1.vek = 30;
printf ("Študent1: \ n \ tMeno:% s \ n \ tid:% d \ n \ tage:% d \ n", študent1.názov,
študent1.id, študent1.Vek);
// Kopírovanie študent1 na študent2
memcpy (& student2, & student1, sizeof (student1));
printf ("\ n \ nPo memcpy:");
printf ("\ n \ nStudent2: \ n \ tName:% s \ n \ tid:% d \ n \ tage:% d \ n",
študent2.meno, student2.id, student2.Vek);
návrat 0;

V príklade 2.c vyhlásili sme dve štruktúry študent1 a študent2 (Riadok 15 a 16). Najskôr inicializujeme student1 (riadok 19, 20, 21). Potom použijeme memcpy kopírovať údaje z študent1 do študent2.

Záver:

V tomto článku sme sa naučili, ako používať memcpy funkcia. Videli sme, že túto funkciu je možné použiť pre akýkoľvek typ pamäťového bloku, ale táto funkcia má určité obmedzenia. Túto funkciu teda musíte používať opatrne.

Hry Top 10 hier, ktoré sa dajú hrať na Ubuntu
Top 10 hier, ktoré sa dajú hrať na Ubuntu
Platforma Windows je jednou z dominujúcich platforiem pre hry kvôli obrovskému percentu hier, ktoré sa dnes vyvíjajú na natívnu podporu systému Window...
Hry 5 najlepších arkádových hier pre Linux
5 najlepších arkádových hier pre Linux
V dnešnej dobe sú počítače vážne stroje používané na hranie hier. Ak nemôžete dosiahnuť nové najvyššie skóre, budete vedieť, čo tým myslím. V tomto pr...
Hry Battle For Wesnoth 1.13.6 Vývoj uvoľnený
Battle For Wesnoth 1.13.6 Vývoj uvoľnený
Battle For Wesnoth 1.13.6 vydané minulý mesiac, je šiestym vývojovým vydaním v 1.13.séria x a prináša množstvo vylepšení, najmä používateľského rozhra...

Najnovšie články o operačných systémoch. Veľa zaujímavých sprievodcov a užitočných rád. Cíťte sa ako vo svete moderných technológií