1、memcpy函数
描述:
C 库函数 void *memcpy(void *str1, const void *str2, size_t n) 从存储区 str2 复制 n 个字节到存储区 str1。
声明:
void *memcpy(void *str1, const void *str2, size_t n)
参数:
- str1 -- 指向用于存储复制内容的目标数组,类型强制转换为 void* 指针。
- str2 -- 指向要复制的数据源,类型强制转换为 void* 指针。
- n -- 要被复制的字节数。
返回值:
该函数返回一个指向目标存储区 str1 的指针。
用法:
#include <stdio.h>
#include <string.h>
int main()
{
int arr1[] = { 1,2,3,4,5,6,7,8,9,10 };
int arr2[20] = { 0 };
memcpy(arr2, arr1, 20);
//20 字节数
int i = 0;
for (i = 0; i < 20; i++)
{
printf("%d ", arr2[i]);
}
结果:
memcpy函数的模拟实现
2、memmove函数
描述:
C 库函数 void *memmove(void *str1, const void *str2, size_t n) 从 str2 复制 n 个字符到 str1,但是在重叠内存块这方面,memmove() 是比 memcpy() 更安全的方法。如果目标区域和源区域有重叠的话,memmove() 能够保证源串在被覆盖之前将重叠区域的字节拷贝到目标区域中,复制后源区域的内容会被更改。如果目标区域与源区域没有重叠,则和 memcpy() 函数功能相同。
声明:
void *memmove(void *str1, const void *str2, size_t n)
参数:
- str1 -- 指向用于存储复制内容的目标数组,类型强制转换为 void* 指针。
- str2 -- 指向要复制的数据源,类型强制转换为 void* 指针。
- n -- 要被复制的字节数。
返回值:
该函数返回一个指向目标存储区 str1 的指针。
用法:
3、memset函数
描述:
C 库函数 void *memset(void *str, int c, size_t n) 用于将一段内存区域设置为指定的值。
memset() 函数将指定的值 c 复制到 str 所指向的内存区域的前 n 个字节中,这可以用于将内存块清零或设置为特定值。
在一些情况下,需要快速初始化大块内存为零或者特定值,memset() 可以提供高效的实现。
在清空内存区域或者为内存区域赋值时,memset() 是一个常用的工具函数。
声明;
void *memset(void *str, int c, size_t n)
参数:
- str -- 指向要填充的内存区域的指针。
- c -- 要设置的值,通常是一个无符号字符。
- n -- 要被设置为该值的字符数。
返回值:
该值返回一个指向存储区 str 的指针。
用法:
4、memcmp函数
描述:
C 库函数 int memcmp(const void *str1, const void *str2, size_t n)) 把存储区 str1 和存储区 str2 的前 n 个字节进行比较。
声明:
int memcmp(const void *str1, const void *str2, size_t n)
参数:
- str1 -- 指向内存块的指针。
- str2 -- 指向内存块的指针。
- n -- 要被比较的字节数。
返回值:
- 如果返回值 < 0,则表示 str1 小于 str2。
- 如果返回值 > 0,则表示 str1 大于 str2。
- 如果返回值 = 0,则表示 str1 等于 str2。
用法: