C Programiranje

Kako se koristi memcpy funkcija na jeziku C?

Kako se koristi memcpy funkcija na jeziku C?
U jeziku C funkcija memcpy () koristi se za kopiranje bloka memorije s jednog mjesta na drugo. U ovom ćemo članku detaljno razmotriti kako se koristi memcpy () funkcija. Pa, krenimo.

Datoteka zaglavlja:

niz.h

Sintaksa:

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

Argumenti:

Funkcija uzima 3 argumenta:

  1. dest:
  2. Ovo je početni pokazivač memorijskog bloka tamo gdje je memorijski blok označen src (2. argument) će se kopirati. Pokazivač je proglašen praznim, tako da se može kopirati bilo koja vrsta memorijskog bloka.

  3. src:
  4. Ovo je početni pokazivač izvornog memorijskog bloka odakle će se memorijski blok kopirati. Pokazivač je proglašen praznim, tako da se može kopirati bilo koja vrsta memorijskog bloka.

  5. veličina:
  6. Ovo je veličina memorijskog bloka u bajtovima.

Vrijednost dva pokazivača dest i src trebao biti na takav način da se dva memorijska bloka ne preklapaju. Veličina memorijskih blokova izvora i odredišta mora biti najmanje veličina (3. argument) bajtova kako bi se izbjeglo preklapanje situacija. Ako se dva memorijska bloka preklapaju, tada se ponašanje memcpy () funkcija je nedefinirana. Kada postoji mogućnost preklapanja, možete koristiti memmove () funkcija knjižnice gdje je preklapanje dobro definirano. memmove () funkcija je sporija u odnosu na memcpy () funkcija.

Zbog vrijednosti veličina, ako se izvoru ili odredištu pristupa preko njihove duljine međuspremnika, tada se ponašanje memcpy () funkcija je nedefinirana.

The memcpy () funkcija ne provjerava završava li znak \ \ 0.

Povratne vrijednosti:

Ova funkcija vraća vrijednost odredišne ​​adrese dest. Kao vrijednost dest je već dostupan, pa ga ne treba pohraniti ni u jednu varijablu.

Primjeri:

// Primjer1.c
#include
#include
int main ()

char src [] = "Pozdrav";
char dest [13];
memcpy (dest, src, 6);
printf ("dest nakon prve memcpy () =>% s \ n", dest);
memcpy (dest + sizeof (src) -1, "svijet!", 8);
printf ("dest nakon druge memcpy () =>% s \ n", dest);
return 0;

U Primjeru1.c proglasili smo niz od dva znaka src i dest. Veličina src je 6 i dest je 13. Prvo smo kopirali 6 znakova 'H', 'e', ​​'l', 'l', 'o', '\ 0' iz src do dest (Redak 11). U drugoj funkciji memcpy () kopirano je 8 znakova ", 'w', 'o', 'r', 'l', 'd', '!',' \ 0 'na dest nakon 5 znakova (redak 15). Slikovito to možemo prikazati na sljedeći način:

// Primjer2.c
#include
#include
int main ()

typedef struct student

char * ime;
int id;
int doba;
std;
std student1; // Deklariraj student1 tipa std
std student2; // Proglasiti student2 tipa std
// Dodjela vrijednosti sudent1
student1.name = "Bamdev Ghosh";
student1.id = 1105;
student1.dob = 30;
printf ("Student1: \ n \ tName:% s \ n \ tid:% d \ n \ taga:% d \ n", student1.Ime,
student1.id, student1.dob);
// Kopiraj student1 u student2
memcpy (& student2, & student1, veličina (student1));
printf ("\ n \ nNakon memcpy:");
printf ("\ n \ nUčenik2: \ n \ tName:% s \ n \ tid:% d \ n \ tag:% d \ n",
student2.ime, student2.id, student2.dob);
return 0;

U Primjeru2.c proglasili smo dvije strukture student1 i student2 (Redak 15 i 16). Prvo inicijaliziramo student1 (retci 19, 20, 21). Nakon toga koristimo memcpy za kopiranje podataka iz student1 do student2.

Zaključak:

U ovom smo članku naučili kako koristiti memcpy funkcija. Vidjeli smo da se ova funkcija može koristiti za bilo koji tip memorijskog bloka, ali ova funkcija ima određena ograničenja. Dakle, ovu funkciju morate pažljivo koristiti.

Najbolje igre za ručno praćenje
Oculus Quest nedavno je predstavio sjajnu ideju ručnog praćenja bez kontrolera. Sa sve većim brojem igara i aktivnosti koje izvršavaju podršku bilo fo...
Kako prikazati OSD prekrivač u aplikacijama i igrama na cijelom zaslonu za Linux
Igranje igara preko cijelog zaslona ili upotreba aplikacija u režimu preko cijelog zaslona bez ometanja može vas odsjeći od relevantnih informacija o ...
Top 5 karata za hvatanje igara
Svi smo vidjeli i voljeli streaming reprodukcije na YouTubeu. PewDiePie, Jakesepticye i Markiplier samo su neki od najboljih igrača koji su zaradili m...

Najnoviji članci o operativnim sustavima. Mnogo zanimljivih vodiča i korisnih savjeta. Osjećajte se kao svoj u svijetu moderne tehnologije