Programowanie w języku C/C++

Memcpy

  • 2009-04-16 15:57
  • 2 komentarze
  • 3424 odsłony
  • Oceń ten tekst jako pierwszy
void* memcpy(void* dest, const void* src, size_t count);


Funkcja służy do dosłownego kopiowania pamięci bajt po bajcie.

Argumenty
dest - adres docelowy (ten, pod który zostanie skopiowane pamięć).
src - adres źródłowy.
count - rozmiar danych do skopiowania (w bajtach).

Zwracana wartość
Wartość dest.

Przykład


#include<string.h>
 
int main()
{
  int src[20] = 
    { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 };
  int dest[10];
  memcpy(dest, src, sizeof(int) * 10);
  //teraz w dest znajduje się pierwsze 10 elementów z src
}


Omówienie przykładu
  • Tworzymy i inicjalizujemy tablicę 20 intów, która będzie źródłem danych,
  • Tworzymy tablicę 10 intów, która posłuży jako cel,
  • Kopiujemy pierwszych sizeof(int) * 10 bajtów (czyli 10 intów) z src do dest.

Uwaga! W C++ memcpy można użyć tylko do typów POD (znaczy się do innych typów też, ale wtedy będzie to niepoprawne), czyli takich, które są typami wbudowanymi, tudzież: zawierają tylko pola będące PODami, z trywialnym konstruktorem i destruktorem, bez przeciążonego operatora przypisania i zawierającymi tylko niestatyczne składowe.

2 komentarze

manfredek 2009-04-16 21:53

przecież dobrze wiesz :>

crayze 2009-04-16 15:50

a może by tak łaskawie napisać do czego w ogóle ta funkcja służy :|
"dest - nowy bufor" - a cóż to za nowy bufor