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

西安手机网站开发/如何制作一个自己的网页

西安手机网站开发,如何制作一个自己的网页,恺英网络公司最新消息,阿里云个人网站制作今天我们来学习一下C语言中内存函数 以下内存函数的使用均需要包含头文件<string.h> 目录 memcpy函数的使用及其模拟实现 memcpy函数的模拟实现 memmove函数的使用和模拟实现 memmove函数的模拟实现 memset函数的使用 memcmp函数的使用 memcpy函数的使用及其模拟实现…

        今天我们来学习一下C语言中内存函数

        以下内存函数的使用均需要包含头文件<string.h>

目录

memcpy函数的使用及其模拟实现

        memcpy函数的模拟实现

memmove函数的使用和模拟实现

        memmove函数的模拟实现

memset函数的使用

memcmp函数的使用


memcpy函数的使用及其模拟实现

        语法结构如下:

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

        memcpy函数从source位置开始向后复制num个字节的数据到destination指向的内存位置

        这个函数在遇到’\0‘的时候不会停下来

        如果source和 destination重叠复制的结果都未知

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

        memcpy函数的模拟实现

#include<stdio.h>
#include<string.h>
//函数返回目标空间的起始地址
void my_memcpy(void* dest, const void* src, size_t num)
{//void*指针需要转换,不能直接运算while (num--){*(char*)dest = *(char*)src;src = (char*)src + 1;dest = (char*)dest + 1;}}
int main()
{int ar1[10] = { 1,2,3,4,5,6,7,8,9,10 };int ar2[10] = {0};my_memcpy(ar2, ar1,sizeof(ar1));for (int i = 0;i < 10;i++){printf("%d ", ar2[i]);}return 0;
}

而对于重叠的内存空间,可以交给memmove函数处理

memmove函数的使用和模拟实现

        语法结构:

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

        与memmove函数差别是memmove函数处理的源内存块和目标内存块是可以重叠的 

        如果源内存和目标空间出现重叠,就交给memmove函数处理

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

        结果为:

        memmove函数的模拟实现

        思路:以拷贝5个字节到第三个为起始位置为例:

        

        当将蓝色数据拷贝到红色数据的时候,从后向前;将红色数据拷贝到蓝色数据的时候,从前向后

        因此有如下代码: 

void* my_memmove(void* dest, const void* src, size_t num)
{void* ret = dest;if (dest<src || (char*)dest>(char*)src + num){/*源头在目标前面,或目标在源头后面,则从头开始复制*/while (num--){*(char*)dest = *(char*)src;src = (char*)src + 1;dest = (char*)dest + 1;}}else{/*源头在目标后面,则从尾开始复制*/dest = (char*)dest + num - 1;src = (char*)src + num - 1;while (num--){*(char*)dest = *(char*)src;src = (char*)src - 1;dest = (char*)dest - 1;}}return (ret);
}
int main()
{int ar1[] = { 1,2,3,4,5,6,7,8,9,10 };my_memmove(ar1, ar1+2,20);for (int i = 0;i < 10;i++){printf("%d ", ar1[i]);}return 0;
}

memset函数的使用

        语法结构:

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

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

#include<stdio.h>
#include<string.h>
int main()
{char str1[] = "hello world";memset(str1, 'a', 6);printf("%s\n", str1);return 0;
}

       结果为:

         

memcmp函数的使用

        语法结构为:

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

        比较ptr1和ptr2指针指向的位置,向后num个字节(即比较前num个字节的大小)

        返回值如下:

         即:

        <0,ptr1小于ptr2

        =0,ptr1等于ptr2

        >0,ptr1大于ptr2

#include<stdio.h>
#include<string.h>
int main()
{char str1[] = "DWAGYftsuibhug";char str2[] = "DWAGYhulu";int n=memcmp(str1, str2, sizeof(char)*10);if (n == 0){printf("str1 is equal to str2\n");}else if (n < 0){printf("str1 is less than str2\n");}else{printf("str1 is greater than str2\n");}my_memcpy(str1, str2, sizeof(char)*5);return 0;
}

        本篇博客就到这里了。求一个点赞,谢谢各位

http://www.whsansanxincailiao.cn/news/32028726.html

相关文章:

  • 区政府网站建设管理计划/免费浏览网站推广
  • 网站制作费计入什么科目/推广策划方案模板
  • 成都中方互动做网站怎样/google 推广优化
  • 住建设部官方网站/深圳网站推广
  • 三网合一网站怎么做/深圳今日头条新闻
  • 为网站做外链的文章/2023知名品牌营销案例100例
  • 涟水县住房和城乡建设局网站/怎么做好网络营销
  • 别墅设计图纸及效果图大全/汕头seo网站推广
  • 阜城网站建设代理/贵阳网站建设
  • 做请帖网站/搜狗链接提交入口
  • 企业网站被转做非法用途/济南网站优化公司哪家好
  • 唐山网站建设哪家好/长春网站优化
  • 做网站 用哪个网盘好/杭州网站seo价格
  • 网站外推和优化/凡科建站和华为云哪个好
  • 谷歌官方建站服务/b站推广2023
  • 做网站的为什么一直拖/网站建站系统
  • python和java做网站/seo综合查询什么意思
  • 新鸿儒网站建设/广告推广方案怎么写
  • 泉州网站制作哪个好薇/seo顾问服务 品达优化
  • 幼儿园学校网站建设作用/百度账号购买网站
  • 烟台专门做网站的/营销推广公司
  • 焦作百姓网免费发布信息/公司以优化为理由裁员合法吗
  • 四川通信建设工程有限公司网站/友情链接代码
  • wordpress 代替cms/北京seo地址
  • 邵阳做网站/搜索引擎优化的定义是什么
  • 做情侣网站/第三方网络营销平台有哪些
  • 和田网站建设/seo一个关键词多少钱
  • 易语言编程软件做网站/seo排名计费系统
  • 陕西长城建设工程有限公司网站/优化大师免费版
  • 绥化网站建设公司/海外自媒体推广