内存函数
- memcpy 内存拷贝函数
- 不管里面的类型 只会拷贝一块内存
- 目标内存 源地址 限制拷贝字节
int main()
{
int arr[5] = { 1,2,3,4,5 };
int arr1[10] = { 0 };
memcpy(arr1, arr, sizeof(arr));
return 0;
}
void* my_memcpy(void * dest,const void * src,size_t num)
{
void* ret = dest;
while (num--)
{
*(char*)dest = *(char*)src;
dest = (char*)dest + 1;
src = (char*)src + 1;
}
return ret;
}
int main()
{
int arr[5] = { 1,2,3,4,5 };
int arr1[10] = { 0 };
my_memcpy(arr1, arr, sizeof(arr));
return 0;
}
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
return 0;
}
void * my_memmove(void * dest,const void * src,size_t num)
{
void* ret = dest;
if (dest < src)
{
while (num--)
{
*(char*)dest = *(char*)src;
dest = (char*)dest + 1;
src = (char*)src + 1;
}
}
else
{
while (num--)
{
*((char*)dest + num) = *((char*)src + num);
}
}
return ret;
}
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
my_memmove(arr + 2, arr, 20);
return 0;
}
- memcpy 只要实现了不重叠拷贝就可以了,而vs中的实现既可以拷贝不重叠,也可以拷贝重叠内存。
- 不重叠使用 memcpy
- 重叠使用 memmove
- memcmp 内存比较
- 相同返回 0
- 第一个参数大于第二个参数 返回 1 反之 返回 -1
- 如果第三个参数字节出现不相等的 情况 提前结束
- 例:int 4 字节 比较 6个字节 就会提前结束
int main()
{
float arr1[] = { 1.0,2.0,3.0,4.0 };
float arr2[] = { 1.0,9.0,3.0,6.0,8.0 };
int ret = memcmp(arr1, arr2, 8);
printf("%d", ret);
return 0;
}
int main()
{
int arr[10] = { 0 };
memset(arr, 1, 20);
return 0;
}