目录
1.memcpy
1.1函数定义
memcpy是 C 语言中的一个标准库函数,用于从一个内存区域复制指定数量的字节到另一个内存区域,定义在 string.h 头文件中。这个函数不关心数据的类型,它只是按字节进行复制,这使得它可以用于任何类型的数据复制。
1.2函数原型
void *memcpy(void *str1, const void *str2, size_t n)
参数:str1 -- 指向用于存储复制内容的目标数组,类型强制转换为 void* 指针。
str2 -- 指向要复制的数据源,类型强制转换为 void* 指针。
n -- 要被复制的字节数。
该函数返回一个指向目标存储区 str1 的指针。
1.3示例代码

1.4注意事项
1.目标指针必须有足够的空间来存储至少 n 个字节。
2.目标和源指针所指向的内存区域不能重叠,如果有重叠的可能,应该使用 memmove 函数来代替 memcpy。
3.与 strcpy 不同,memcpy 会复制完整的 n 个字节,不会因为遇到字符串结束符 '\0' 而停止。
2.memmove
2.1函数的定义
memmove函数是C语言标准库中的一个函数,用于从一个内存位置复制数据到另一个内存位置。这个函数在处理重叠内存区域时特别有用,因为它能够在源区域被覆盖之前将重叠区域的字节拷贝到目标区域中。如果没有重叠,memmove的行为与memcpy相同。
2.2函数原型
void *memmove(void *str1, const void *str2, size_t n);
参数:str1是指向目标数组的指针。
str2是指向数据源的指针。
n是要复制的字节数。
返回值:函数返回一个指向目标存储区str1的指针。
2.3示例代码

2.4注意事项
如果区域重叠,memmove 会确保数据正确复制,而 memcpy 则可能导致数据损坏。
3.memcmp
3.1函数的定义
memcmp 是 C 标准库中的一个函数,用于比较两块内存区域的前 n 个字节。它的行为与尾部无关,因为它只比g较指定的字节数,而不会在遇到字符串的终止符 \0 时停止。
3.2函数原型
int memcmp(const void *s1, const void *s2, size_t n);
参数:s1 和 s2指向需要比较的两块内存区域。
n:指定要比较的字节数。
返回值:返回 0:两块内存的前 n 个字节完全相同。
返回负值:s1 中第一个不匹配字节小于 s2。
返回正值:s1 中第一个不匹配字节大于 s2。
3.3示例代码

3.4注意事项
1.如果比较的字节数 n 超过了字符串的实际长度,memcmp 会继续比较 \0 后的内存内容。这可能导致未定义行为,尤其当内存区域未初始化时。
2. 在比较字符串时,确保 n 不超过最短字符串的长度,以避免错误结果。
873

被折叠的 条评论
为什么被折叠?



