В чем разница между memset и memcpy в C
Я прочитал заголовки функций, но я все еще не уверен, в чем именно разница с точки зрения вариантов использования.
6 ответов
memcpy()
копирует из одного места в другое. memset()
просто устанавливает все части памяти на одно и то же значение.
пример:
memset(str, '*', 50);
в приведенной выше строке первые 50 символов строки str равны * (или любому второму аргументу memset).
memcpy(str2, str1, 50);
вышеуказанная строка копирует первые 50 символов str1 в str2.
memset()
устанавливает для всех байтов в указанном буфере одинаковое значение,memcpy()
копирует последовательность байтов из другого места в буфере.
char a[4];
memset(a, 7, sizeof(char)*4);
/*
* a is now...
*
* +-+-+-+-+
* |7|7|7|7|
* +-+-+-+-+
*/
char b[] = {1,2,3,4};
char c[4];
memcpy(c, b, sizeof(char)*4);
/*
* c is now...
*
* +-+-+-+-+
* |1|2|3|4|
* +-+-+-+-+
*/
memset
устанавливает блок памяти в одно значение. memcpy
копирует содержимое блока в другой блок.
возможно, вас заинтересует разница между memcpy
и memmove
. Оба делают то же самое, но последний работает, даже если источник и назначение перекрываются.
memset()
используется для установки всех байтов в блоке памяти определенным значением типа char. Memset также хорошо играет только с char
как это его значение инициализации.
memcpy()
копирует байты из памяти. Этот тип копируемых данных не имеет значения,он просто создает байтовые копии.
memset fill с постоянным байт
недействительным *функцию memset(Void*, который с инт С, в size_t Н);
польза memset программник может сразу заполнить память с определенным. и memcpy используется постоянный пустой указатель на источник, который не может быть изменен.
memcpy скопируйте площадью
недействительным *функции memcpy(Void *после дест пустоту константные *в src, size_t в Н);
ссылка memcpy функцию memset
memcpy()
копирует из одного места в другое. memset()
просто устанавливает все части памяти на то же самое.
например, здесь задает длину строки строки str в * (или любой второй аргумент memset).
memset(str, '*', strlen(str)+1);
здесь копирует длину строки src в dest.
memcpy(dest, src, strlen(src)+1);