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

科普重庆网站/天津seo网站管理

科普重庆网站,天津seo网站管理,网站打开乱码,html 手机网站开发1.前言 2.库函数的具体作用 3具体实现代码 1.前言 在一些互联网公司的笔试或者面试中,对库函数的考察几乎是必不可少的,或者会问一些库函数之间的区别,或者他们的具体实现方法,那么在本文我将抛砖引玉讲解部分c语言中的库函数的实…

1.前言

2.库函数的具体作用

3具体实现代码

1.前言

在一些互联网公司的笔试或者面试中,对库函数的考察几乎是必不可少的,或者会问一些库函数之间的区别,或者他们的具体实现方法,那么在本文我将抛砖引玉讲解部分c语言中的库函数的实现,供大家学习参考。

2.库函数的具体作用

今天我们要介绍的库函数主要有memcpy以及memmove,但是所谓知己知彼,方能百战不殆。

我们首先来看看这些库函数具体是如何定义的。

首先看到memcpy函数的描述

C 库函数 void *memcpy(void *str1, const void *str2, size_t n) 从存储区 str2 复制 n 个字节到存储区 str1

再看到memcpy的参数

  • str1 -- 指向用于存储复制内容的目标数组,类型强制转换为 void* 指针。
  • str2 -- 指向要复制的数据源,类型强制转换为 void* 指针。
  • n -- 要被复制的字节数。

最后是他的返回值

该函数返回一个指向目标存储区 str1 的指针。

然后我们看到第二个memmove函数的描述

C 库函数 void *memmove(void *str1, const void *str2, size_t n) 从 str2 复制 n 个字符到 str1但是在重叠内存块这方面,memmove() 是比 memcpy() 更安全的方法。如果目标区域和源区域有重叠的话,memmove() 能够保证源串在被覆盖之前将重叠区域的字节拷贝到目标区域中,复制后源区域的内容会被更改。如果目标区域与源区域没有重叠,则和 memcpy() 函数功能相同。

其余参数部分及返回值与memcpy类似我就不再过多赘述。

但是有一点需要注意的是memmove是能够实现在重叠内存块上的复制,而memcpy函数在c语言的标准中对此是不做要求的(虽然现在大多数编译器的memcpy也能实现memmove的功能)。

3.具体实现代码

我们先看到memcpy函数

void* my_memcpy(void*dest,const void*src,int count)
{void *ret=dest;//返回值assert(dest&&src);//确保传入参数不为NULLwhile(count--){*(char*)dest=*(char*)src;//复制过程dest=(char*)dest+1;src=(char*)src+1;//指针偏移1位}return ret;
}

这里注意由于void*类型的指针是不能被操作的,只能用于接收各类型的指针,所以使用前必须进行强制类型转换。而转换成char*类型是因为这个库函数是对内存上的每一字节进行修改的,而char*类型的指针每次进行解引用(*)操作或者进行加减,都是操作一个字节,符合该库函数的要求

接下来我们看到memmove函数是如何实现的

void * my_mommove(void*dest,const void*src,int count)
{void *ret=dest;assert(dest&&src);if(dest<src){while(count--){*(char*)dest=*(char*)src;//从前往后dest=(char*)dest+1;src=(char*)src+1;}}else{while(count--){*((char*)dest+count)=*((char*)src+count);//从后往前}}return ret;
}

对于memmove函数我们有一点是需要注意的

有两种特殊情况:

(1)src>dest。这种情况下我们需要令src从后往前开始复制给dest串,否则会出现src的值先被覆盖导致得不到想要的结果。

 (2)src<dest。对于这种情况,我们需要令src从前往后开始复制给dest串,否则也会出现src的值先被覆盖的情况

 (3)如果对于两内存区域没有交叉区域的情况下,那么复制方向不会影响答案的正确性。

所以我们可以得出以下的关系

if(dest<src)//前—>后

else//后——>前

于是便得到了我们上面的代码。

本文就此结束。由于博主能力有限,文章若有任何的错误或者bug可在评论区下方指正。

http://www.jmfq.cn/news/5236687.html

相关文章:

  • 如何用虚拟主机做网站/seo排名点击器
  • 制作免费个人网站/sem是什么设备
  • 目前b2b网站有哪些/atp最新排名
  • 怎么做粉丝福利购网站/seo公司上海
  • 设计师分享网站/上海做网站优化
  • 云存储能用来做网站吗/网站推广方案有哪些
  • 鞍山 中企动力提供网站建设/深圳网络推广大师
  • 无忧网站建设服务/邯郸今日头条最新消息
  • wordpress 首页欢迎/seo综合优化公司
  • 学校定制网站建设公司/网站关键词排名seo
  • 专做零食的网站/杭州百度快照优化排名
  • 网站开发有哪些语言/seo综合查询什么意思
  • 给别人做的网站涉及到诈骗/怎样申请网站
  • wordpress网站的CDN设置/齐三seo顾问
  • 建设网站计划书/百度推广登录平台
  • 学校网站建设的技术方案/北京seo包年
  • 西宁公司官方网站建设/搜狗搜索网页版
  • 免费制作网络商城网站/百度空间登录入口
  • 网页设计制作图片代码/免费seo快速排名系统
  • 怎么用别人网站做模板/百度经验首页登录官网
  • 怎么介绍自己做的静态网站/深圳seo优化外包公司
  • 吉安做网站的公司/短视频推广策略
  • 南宁营销型网站建设公司哪家好/最新足球消息
  • 长沙网站建设zh68/优化师培训机构
  • 淘宝网站用什么语言做的/武汉大学人民医院洪山院区
  • 免费的网站推广怎么做效果好/寰宇seo
  • 网上商城可行性分析报告/四川最好的网络优化公司
  • 北京+网站建设/全国广告投放平台
  • soho建网站 必须先注册公司吗/长沙全网推广
  • 优化免费网站建设/白山seo