我已经阅读了函数标题,但我仍然不确定在用例方面到底有什么区别。
问问题
42347 次
6 回答
48
memcpy()
从一个地方复制到另一个地方。memset()
只需将所有内存设置为相同的值。
例子:
memset(str, '*', 50);
上面的行将字符串 str 的前 50 个字符设置为 *(或 memset 的任何第二个参数)。
memcpy(str2, str1, 50);
上述行将 str1 的前 50 个字符复制到 str2。
于 2009-10-08T06:51:26.277 回答
15
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|
* +-+-+-+-+
*/
于 2009-10-08T06:50:34.720 回答
3
memset
将一块内存设置为单个值。memcpy
将一个块的内容复制到另一个块中。
memcpy
也许您会对和之间的区别感兴趣memmove
。两者都做同样的事情,但即使源和目标重叠,后者也能工作。
于 2009-10-08T06:51:26.537 回答
3
memset()
用于将内存块中的所有字节设置为特定的 char 值。Memset 也只能char
用于它的初始化值。
memcpy()
在内存之间复制字节。这种被复制的数据是无关紧要的,它只是逐字节地复制。
于 2009-10-08T06:53:21.953 回答
0
memcpy()
从一个地方复制到另一个地方。memset()
只需将所有内存设置为相同即可。
例如,此处将字符串 str 的字符串长度设置为 *(或 memset 的任何第二个参数)。
memset(str, '*', strlen(str)+1);
这里将字符串 src 的字符串长度复制到 dest。
memcpy(dest, src, strlen(src)+1);
于 2015-12-01T09:42:43.217 回答