C语言常用内存函数归纳

目录

1.memcpy

1.1函数定义

1.2函数原型

1.3示例代码

1.4注意事项

2.memmove

2.1函数的定义

2.2函数原型

2.3示例代码

2.4注意事项

3.memcmp

3.1函数的定义

3.2函数原型

3.3示例代码

3.4注意事项


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 不超过最短字符串的长度,以避免错误结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值