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

苏州网站建设建网站温州网站升级

苏州网站建设建网站,温州网站升级,静态网站如何入侵,wordpress 在线知识库目录 系列文章目录 前言 1. memcpy使⽤和模拟实现 1.2 memcpy函数的模拟实现: 2. memmove 使⽤和模拟实现 2.1memmove的模拟实现#xff1a; 3. memset 函数的使⽤ 4. memcmp 函数的使⽤ 系列文章目录 ✅作者简介#xff1a;大家好#xff0c;我是橘橙黄又青#xff… 目录 系列文章目录 前言 1. memcpy使⽤和模拟实现 1.2 memcpy函数的模拟实现: 2. memmove 使⽤和模拟实现 2.1memmove的模拟实现 3. memset 函数的使⽤ 4. memcmp 函数的使⽤ 系列文章目录 ✅作者简介大家好我是橘橙黄又青一个想要与大家共同进步的男人 个人主页橘橙黄又青_C语言,指针-CSDN博客 前言 学习c语言的只要内存函数及其模拟实现掌握函数返回类型并模拟。 正文开始了 1. memcpy使⽤和模拟实现 void * memcpy ( void * destination, const void * source, size_t num ); 函数内容作用复制数据和前面strcpy相似。返回类型无返回 1.函数memcpy从source的位置开始 向后复制 num个 字节 的数据到destination指向的内存位置. 2.这个函数在遇到 \0 的时候并不会停下来. 3.如果source和destination有任何的重叠复制的结果都是未定义的. 也就是说c语言对memcpy的定义是对 不重复内存数据类型进行复制举个例子: arr[20] {1, 2,3, 4, 5, 6, 7, 8} memcpy(arr, arr3, 4)//把arr[2]向后的4个字节复制到arr向后的4个字节 memcpy复制都是在同一个数组内存重叠了这样是错误的。 memcpy的正确使用例子,代码1 #include stdio.h #include string.h int main() {int arr1[] { 1,2,3,4,5,6,7,8,9,10 };int arr2[10] { 0 };memcpy(arr2, arr1, 20);//把arr前面4个整形拷贝到arr2中int i 0;for (i 0; i 10; i){printf(%d , arr2[i]);}return 0; } 输出结果 1.2 memcpy函数的模拟实现: #include stdio.h #include string.hvoid * my_memcpy ( void * dst, const void * src, size_t count)//以字节单位复制 {void * ret dst;assert(dst);//断言是否为NULLassert(src);while (count--) {//搬运conut个字节*(char *)dst *(char *)src;//void不能解引用强制转换后在解引用。dst (char *)dst 1;//det但是void类型不能所以可以写成char*)dst;但是一些编译器不支持所以最好写成改代码这样。src (char *)src 1;}return(ret);//返回起始地址 }int main() {int arr1[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};int arr2[10] { 0 };my_memcpy(arr2, arr1 3, 5 * sizeof(arr[0]);//把4 5 6 78复制到arr2去int i 0;for (i 0; i 10; i){printf(%d , arr2[i]);}return 0; } 那对于重叠的内存数据怎么解决呢cy语言对于重叠的内存交给memmove来处理。 2. memmove 使⽤和模拟实现 函数内容 void * memmove ( void * destination, const void * source, size_t num ); 函数内容作用复制数据。返回类型无返回。 1.和memcpy的差别就是memmove函数处理的源内存块和⽬标内存块是可以重叠的。 2.如果源空间和⽬标空间出现重叠就得使⽤memmove函数处理。 举例1 #include stdio.h #include string.h int main() {int arr1[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };memmove(arr12, arr1, 20);//把12345拷贝到arr1中的34567上。int i 0;for (i 0; i 10; i){printf(%d , arr[i]);}return 0 } 输出结果 2.1memmove的模拟实现 代码分析时有3种情况待我慢慢给你们分析 void* my_memmove(void* dst, const void* src, size_t count) {void* ret dst;if (dst src || (char*)dst ((char*)src count)) {//从后面往前面复制是第1.2种情况while (count--) {*(char*)dst *(char*)src;dst (char*)dst 1;src (char*)src 1;}}else {//从前面往后面复制.第3种情况选择从前面往后面复制dst (char*)dst count - 1;src (char*)src count - 1;while (count--) {*(char*)dst *(char*)src;dst (char*)dst - 1;src (char*)src - 1;}}return(ret); } #include stdio.h #include string.h int main() {int arr1[] { 1,2,3,4,5,6,7,8,9,10 };my_memmove(arr1 2, arr1, 20);//把1234拷贝到arr1中的3456上。int i 0;for (i 0; i 10; i){printf(%d , arr1[i]);}return 0; } 第1种情况 第2种情况 第3种情况 分析第2种 3. memset 函数的使⽤ 函数内容 void * memset ( void * ptr, int value, size_t num ); 功能memset是⽤来设置内存的将内存中的值以字节为单位设置成想要的内容。 案例1 #include stdio.h #include string.h int main () {char str[] hello world;memset (str,x,6);//把str前面6个字节换成xprintf(str);return 0; } 输出结果 这里我们给一个错误案例2 #include stdio.h #include string.h int main() {int arr[10] { 0 };memset(arr, 1, 40);printf(arr);return 0; } 输出结果 总结memset函数是以字节为单位来改的 4. memcmp 函数的使⽤ 函数内容 int memcmp ( const void * ptr1, const void * ptr2, size_t num ); 功能⽐较从ptr1和ptr2指针指向的位置开始向后的num个字节。 返回类型int以strcmo相似。 案例1 #include stdio.h #include string.h int main() {char buffer1[] DWgaOtP12df0;char buffer2[] DWGAOTP12DF0;int n memcmp(buffer1, buffer2, sizeof(buffer1));if (n 0) printf(%s is greater than %s.\n, buffer1, buffer2);else if (n 0) printf(%s is less than %s.\n, buffer1, buffer2);elseprintf(%s is the same as %s.\n, buffer1, buffer2);return 0; } 输出结果 好了今天就分享到这里了都看到这里了点一个赞吧谢谢。
http://www.zqtcl.cn/news/118495/

相关文章:

  • 百度云主机上装网站flash怎么做网页
  • 外贸网站能用阿里云吗哔哩哔哩网页版打不开
  • 南宁月嫂网站建设财经直播的网站开发一个多少钱
  • 宁波网站的建设百度网盟推广 网站
  • 大连城乡建设局网站青岛网站建设外贸
  • 石家庄网站建设招聘珠海快速网站建设
  • 网站建设代理ai制作网页
  • 微网站平台怎样做网站wordpress侧栏跟随
  • 手机网站建设好吗湖南省专业建设公司网站的机构
  • 网站代码 字体好用的cms网站
  • 美食网站首页设计用手机怎么看自己做的网站
  • 平台类网站开发怎样做永久网站二维码
  • 网站开发客户挖掘php网站开发心得3500字
  • 检察院做网站的目的青岛网站推广优化
  • dede替换网站模板定制网站建设的流程
  • 天津专业网站制作网站开发模板
  • 做二手车网站需要什么怎样建立门户网站
  • 宁波做网站首荐荣盛网络网站建设太仓
  • 购物网站公司要花费多少钱wordpress 菜单 字体加粗
  • 网站模板如何编辑软件crm免费客户管理系统
  • 微信制作网站设计重庆关键词优化软件
  • 网站的设计与应用论文平台推广计划书模板范文
  • 网站备案用户名忘了怎么办网站做301排名会掉
  • 厦门制作网站企业网站子域名怎么做
  • 青岛微网站开发品牌建设青之见
  • 淄博哪有培训做网站的湖南营销型网站建设企业
  • 动物网站建设深圳最好的营销网站建设公司
  • 各种网站制作陕西建设厅证件查询网站
  • 如何提高一个网站如何做简单网站
  • 游戏网站开发找什么人可建智慧园区设计方案