【C语言】内存函数

memcpy

使用:拷贝数据

void * memcpy( void *destination,const void * source, size_t num );

  • 函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存位置。
  • 这个函数在遇到'\0’的时候并不会停下来。
  • 如果source和destination有任何的重叠,复制的结果都是未定义的。

模拟:

void*my_memcpy(void*dest,const void*src,int num)
{
    assert(dest&&src);
    void*ret = dest;
	while(num--){
	*(char*)dest = *(char*)src;//强制类型转换成(char*),使其一次拷贝一个字节
	 dest = (char*)dest+1;
	 src = (char*)src+1;
}
return ret;
}

memmove

使用:与memcpy相似

void *memmove( void*destination,const void*source, size_t num );

  • 和memcpy的差别就是memmove函数处理的源内存块和目标内存块是可以重叠的。
  • 如果源空间和目标空间出现重叠,就得使用memmove函数处理。

模拟:

void*my_memmove(void*dest,const void*src,int num)
{
	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);
    }
	}
}

memset

使用:内存设置

void*memset(void*ptr,int value,size_tnum );

  • memset是用来设置内存的,将内存中的值以字节为单位设置成想要的内容。

memcmp

使用:

 int memamp(const void*ptrl,const void* ptr2, size_t num );

  • 比较从ptr1和ptr2指针指向的位置开始,向后的num个字节

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值