栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言——内存操作函数

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言——内存操作函数

C语言——内存操作函数
  • memcpy
  • memmove
  • memset
  • memcmp

memcpy

void* memcpy( void* dest, const void* sour, size_t num )

函数功能:

  • 在缓冲区之间复制字符。

函数返回值:

  • 返回 dest 的值。

说明:

  • 从 sour 的位置开始向后复制 num 个字符的数据到 dest 的内存位置。
  • memcpy() 遇到 ‘’ 不会停止复制。
  • 如果 sour 和 dest 有任何的重叠,复制结果都是未定义的。

函数实现:

void* my_memcpy(void* dest, const void* sour, size_t num)
{
	assert(dest != NULL);
	assert(sour != NULL);
	//复制
	void* ret = dest;
	while (num--)
	{
		*(char*)dest = *(char*)sour;
		dest = (char*)dest + 1;
		sour = (char*)sour + 1;
	}
	return ret;
}
memmove

void* memmove( void* dest, const void* sour, size_t num )

函数功能:

  • 将一个缓冲区移动到另一个缓冲区。

函数返回值:

  • 返回 dest 的值。

说明:

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

函数实现:

void* my_memmove(void* dest, const void* sour, size_t num)
{
	assert(dest != NULL);
	assert(sour != NULL);
	//移动
	void* ret = dest;
	if (dest <= sour || (char*)dest >= ((char*)sour + num))
	{
		while (num--)
		{
			*(char*)dest = *(char*)sour;
			dest = (char*)dest + 1;
		    sour = (char*)sour + 1;
		}
	}
	else
	{
		//倒序拷贝
		dest = (char*)dest + (num - 1);
		sour = (char*)sour + (num - 1);
		while (num--)
		{
			*(char*)dest = *(char*)sour;
			dest = (char*)dest - 1;
			sour = (char*)sour - 1;
		}
	}
	return ret;
}
memset

void* memset( void* dest, int c, size_t num );

函数功能:

  • 将缓冲区设置为指定的字符。

函数返回值:

  • 返回 dest 的值。

说明:

  • memset() 将从 dest 开始的 num 个字节设置为字符 c 。
memcmp

int memcmp( const void* ptr1, const void* ptr2, size_t num )

函数功能:

  • 比较两个缓冲区中的字符。

函数返回值:

  • 从 ptr1 指针开始的 num 个字节大于从 ptr2 指针开始的 num 个字节,则返回大于 0 的数字;
  • 从 ptr1 指针开始的 num 个字节等于从 ptr2 指针开始的 num 个字节,则返回 0 ;
  • 从 ptr1 指针开始的 num 个字节小于从 ptr2 指针开始的 num 个字节,则返回小于 0 的数字。

说明:

  • 比较 ptr1 指针和 ptr2 指针开始的 num 个字节。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/656206.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号