Как использовать memcpy для копирования одного массива в другой? - PullRequest
0 голосов
/ 17 июня 2020
for (i = 0; i < n1; i++) 
   L[i] = arr[l + i]; 

Поскольку я хочу скопировать большой массив, я слышал, что нужно использовать memcpy.

Ответы [ 2 ]

4 голосов
/ 17 июня 2020

memcpy, как следует из названия, копирует область памяти. C стандартная функция в string.h.

void *memcpy(void *dest, const void *src, size_t n); 

описание:

Функция memcpy() копирует n байтов из области памяти src в область памяти dest. Области памяти must not overlap. Используйте memmove (3), если области памяти перекрываются. Функция memcpy() возвращает pointer to dest. для получения дополнительной информации goto man7: memcpy

, поэтому в вашем случае вызов будет:

memcpy(L, &arr[l], n1*sizeof(arr[l]));

размер одного элемента массива:

sizeof(arr[l])

убедитесь, что (l+n1) не выходит за границы массива! это вы ответственность.

1 голос
/ 17 июня 2020
memcopy(destination, source, length)

Это будет в вашем случае:

int len = sizeof(int) * n1;
memcopy(L, arr+l, len);

Примечание. Возможно, вам придется исправить расчет длины в соответствии с типом, который вы используете. Кроме того, не забудьте добавить 1, чтобы включить символ \ 0, который завершает массивы символов, если вы имеете дело со строками.

...