当前位置: 首页 > news >正文

商丘市做网站的公司揭阳新站seo方案

商丘市做网站的公司,揭阳新站seo方案,抖音代运营服务内容,潍坊网站建设一品网络小程序文章目录 前言一、memcpy函数(内存拷贝函数)二、memmove重叠拷贝函数三.memset内存设置函数四.memcmp内存比较函数总结 前言 我们之前按学习了C语言标准库中提供了一系列的字符和字符串库函数,接下来我们就学习一下关于内存相关的一些函数。…

文章目录

  • 前言
  • 一、memcpy函数(内存拷贝函数)
  • 二、memmove重叠拷贝函数
  • 三.memset内存设置函数
  • 四.memcmp内存比较函数
  • 总结

前言

我们之前按学习了C语言标准库中提供了一系列的字符和字符串库函数,接下来我们就学习一下关于内存相关的一些函数。


一.memcpy函数(内存拷贝函数)

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

1.1使用

destination这个是目地,source这个是源头,size_t num这个是内存大小的字节单位

int main()
{int arr1[] = { 1,2,3,4,5 };int arr2[] = { 0 };memcpy(arr2, arr1, 20);return 0;
}

负责拷贝两块独立空间中的数据

如果你想要重叠拷贝的话,则请使用memmove

1.2模拟实现

void* my_memcpy(void* dest, const void* src, size_t num)
{assert(dest && src);void* ret = dest;while (num--){*(char*)dest = *(char*)src;dest=*(char*)dest + 1;src=*(char*)src + 1;}return ret;}

代码写完很多人会有疑问,为什么要这样子去做?char为什么要这样子的指针去强制类型转换,是因为这个代码,它可以用于任意类型的内存数据所以说他其实并不知道你传进来的数据是哪种类型的,我们之前的例子是一个整形,你不能用一个整形去做,他万一是长整形短整型怎么办呢?所以我们要想到一个能解决所有类型的方法,那就是把它强制转换成字符新的指针,因为一个字符类型,他就等于一个字节,所以说你每+1就等于一个字节,每不管哪个类型都可以把它变成一个字节一个字节的走。

把这个数据类型,都可以分成这样,所以就解决了。

二.memmove重叠拷贝函数

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

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

2.1使用

int main()
{int arr1[] = { 1,2,3,4,5,6,7,8,9,10 };memmove(arr1 + 2, arr1, 20);int i = 0;for (i = 0; i < 10; i++){printf("%d ", arr1[i]);}return 0;
}

2.2模拟实现

这个的模拟实现就比较难了,有时候需要从前往后处理,有时候又需要从后往前处理,所以我们必须来画一个图来思考

当dest的地址小于src的地址,我们是从前往后拷还是从后往前拷呢?我们可以从图像得出,如果我们从后往前拷的话就会覆盖还未考虑的数据,所以只能从前往后拷。

同理,当dest的地址大于src的时候,只能从后往前拷

void* my_memmove(void* dest, const void* src, size_t num)
{//assert(dest && src);//从前向后拷贝void* ret = dest;if (dest < src){while (num--){*(char*)src = *(char*)dest;dest = *(char*)dest + 1;src=*(char*)src + 1;}}//从后向前拷贝else{while (num--){//先找到最后一个数据,通过num--不断向前拷贝*((char*)dest+num) = *((char*)src+num);}}return ret;}

三.memset内存设置函数

void * memset ( void * ptr, int value, size_t num );

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

使用

int main()
{char str[] = "hello world";memset(str, 'x', 6);printf(str);return 0;
}

四.memcmp内存比较函数

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

是按字节数去比较,如果在之前就比完了,后面就不需要再比了,如果源头大于目的返回一个小于0的数

int main()
{int arr1[] = { 1,2,3,4 };int arr2[] = { 1,2,3,5 };int ret = memcmp(arr1, arr2, 15);printf("%d", ret);return 0;
}

返回-1


总结

熟练的掌握这一系列的库函数,可以在做某些题目上省去大量的时间,如果你不做题目,掌握这些函数,也可以增加你阅读别人函数的经验看得懂别人的代码

http://www.ritt.cn/news/810.html

相关文章:

  • 网站制作与维护费用网站开发的基本流程
  • wordpress启用多站点北京外包seo公司
  • 建站师telent网站排名优化快速
  • 大连做网站billionseo网络推广优化服务
  • 龙岗专业做网站公司搜索引擎排行榜
  • asp技校网站品牌网络推广运营公司
  • 网站做百度推广怎么推广网站网络营销公司注册找哪家
  • 护肤品网站建站模板seo服务外包报价
  • 金山网站制作网站推广软件费用是多少
  • 搭建网站要用到的工具上海网站建设开发
  • 优秀高端网站建设报价微信朋友圈广告
  • 郑州网站seo哪家公司好北京seo网站推广
  • 网站开发需要懂多少代码百度登录入口官网
  • 怎么做网站企业文化栏目google seo 优化招聘
  • 网站设计软件microsoft2013网页设计免费模板
  • 要想提高网站排名应该如何做seo推广有哪些公司
  • 近期10大新闻事件如何优化网站首页
  • 网站的购物车怎么做专业优化网站排名
  • 亿赐客网站怎么样什么是百度竞价排名
  • 肇庆自助网站建设系统长沙百度首页优化排名
  • 宁波网站建设专业定制抖音引流推广一个30元
  • 免费浏览网站的软件今天最新的新闻头条新闻
  • 网站需求分析与设计方案企业官网定制设计
  • 山东省建设工程信息网官网宿州百度seo排名软件
  • 中国互联网数据平台官网如何进行搜索引擎优化 简答案
  • 成都网站制作培训北京百度推广客服电话多少
  • 上海网站建设软件下载sem优化和seo的区别
  • 武汉市网站设计游戏推广员拉人犯法吗
  • 太原网站建设杰迅科技全渠道营销
  • 做新闻网站用香港阿里云服务器网页制作基础教程