您现在的位置是:群英 > 开发技术 > 编程语言
C语言中内存操作函数有哪些,用法是什么?
Admin发表于 2022-02-15 17:52:32906 次浏览

    这篇文章我们来了解C语言中内存操作函数的相关内容,文中给大家介绍了几个内存操作函数的的作用和使用,有需要的朋友可以参考,接下来就跟随小编来一起学习一下吧!

    头文件:#include<memory.h>

    1.memcpy

    作用:内存拷贝

    函数原型:

void *memcpy( void *dest, const void *src, size_t count );

    使用:

    使用格式:memcpy(目的地,原,想操作内存大小(单位字节))

    把 "参数2" 起始的 "参数3" 个字节 内容拷贝到 "参数1 '

    memecpy函数类似于strncpy。

    例:

#include <memory.h>
#include <string.h>
#include <stdio.h>
int main()
{
	int aa[] = { 1,2,3,4 };
	int bb[10] = { 0 };
	memcpy(bb, aa, 4 * sizeof(int));//把aa数组中4*4(每个int类型是4字节)内容拷贝到bb数组
	for (int i = 0; i < 10; i++) //打印bb数组全部数据
	{
		printf("%d ", bb[i]);
	}	
}

    最后bb字符串中前4*4个字节的内容被改为aa的内容

    注意 :memcpy不能拷贝重叠内存。

#include <memory.h>
#include <string.h>
#include <stdio.h>
int main()
{
	int aa[] = { 1,2,3,4,5,6,7,8,9,10 };
	my_memcpy(aa + 2, aa, 24);
	for (int i = 0; i < 10; i++)
	{
		printf("%d ", aa[i]);
	}
}

    输出:

    拷贝重叠内存会出现这样的问题。

    2.memmove

    作用:内存拷贝(可拷贝重叠内存)

    原型:

void *memmove( void *dest, const void *src, size_t count );
 

使用与memcpy一样,只是memmove可以拷贝重叠内存

#include <memory.h>
#include <string.h>
#include <stdio.h>
int main()
{
	int aa[] = { 1,2,3,4,5,6,7,8,9,10 };
	memmove(aa + 2, aa, 24);
	for (int i = 0; i < 10; i++)
	{
		printf("%d ", aa[i]);
	}
}

    出:

    同样的代码使用memmove就可以.

    3.memcmp

    作用:内存比较

    函数原型:

int memcmp( const void *buf1, const void *buf2, size_t count );
 

    使用:

    使用格式:memcmp(地址1,地址2,想要比较的内存大小 单位bit)

    逐字节比较内存大小,

    逐字节一对一对比较!!

    返回值有三种情况:

    <0 “参数1” 与 “参数2” 逐字节比较时遇到的第一对不同的内存时 “参数1” 中数据 < “参数2”。

    =0 “参数1” 与 “参数2” 中的前“ 参数” 三个字节的内容完全相等。

    >0 “参数1” 与 “参数2” 逐字节比较时遇到的第一对不同的内存时 “参数1” 中数据 > “参数2”。

    4.memset

    作用:内存设置

    函数原型:

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

    使用:

    使用格式:memset(地址,一个数,设置多少字节)

    例:

#include <memory.h>
int main()
{
	int a[] = {1,2,3,4,5};
	memset(a, 1, 20);//把从a开始的前二十个字节内容改成1
}

    结果:

    总结

    关于C语言中内存操作函数就介绍到这,上述示例具有一定的借鉴价值,感兴趣的朋友可以参考,希望能对大家有帮助,想要了解更多内存操作函数的使用,大家可以关注群英网络其它的相关文章。

文本转载自PHP中文网

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

相关信息推荐
2022-05-31 17:49:01 
摘要:java中get请求乱码办法:1、使用【java.net.URLDecoder】中的【decode("变量","UTF-8")】解码;解决2、使用【java.net.URLEncoder】中的【encode("中文","UTF-8"】转码。
2022-05-14 14:59:38 
摘要:html5离线存储有两种:1、localstorage(本地存储),通常用于静态资源(静态页面)的缓存;2、Application Cache(应用程序缓存),通常用于AJAX请求缓存,存储非关键性AJAX数据。
2022-06-30 17:42:30 
摘要:golang连接数据库的方法:首先使用go get命令安装数据库驱动;然后在程序中使用import导入驱动;最后使用sql.Open()方法连接数据库即可。
云活动
推荐内容
热门关键词
热门信息
群英网络助力开启安全的云计算之旅
立即注册,领取新人大礼包
  • 联系我们
  • 24小时售后:4006784567
  • 24小时TEL :0668-2555666
  • 售前咨询TEL:400-678-4567

  • 官方微信

    官方微信
Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
微信公众号
返回顶部
返回顶部 返回顶部