Вы будете использовать memcpy
, когда копируете содержимое одного массива в другой (и это содержимое не составляет строку ), или когда вы пытаетесь отобразить содержимое объект одного типа на байты объекта другого типа.
Например, если вы отображаете свой тип struct
на массив unsigned char
, вы должны сделать что-то вроде:
X foo = {1, 2};
unsigned char *bytes = malloc( sizeof foo );
unsigned char sbytes[sizeof foo];
memcpy( bytes, &foo, sizeof foo );
memcpy( sbytes, &foo, sizeof foo );
Аналогично, если вы пытаетесь скопировать содержимое одного массива в другой, и это содержимое не составляет строку , вы также должны использовать memcpy:
int src[N];
int *dst = malloc( sizeof src );
int sdst[N];
...
memcpy( dst, src, sizeof src );
memcpy( sdst, src, sizeof src );
Если они составляют строку, вы бы использовали strcpy
:
char blah[10];
strcpy( blah, "foo" );
В противном случае используйте оператор присваивания, как вы сделали здесь.