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

做的比较好比较牛逼的网站怎么交换友情链接

做的比较好比较牛逼的网站,怎么交换友情链接,用flex做的网站,做网站一班需要多少钱相比于内存函数,字符串函数和字符函数是对字符串和字符进行操作,内存函数是对内存进行操的。下面跟大家分享我学到的几个内存函数。 memcpy函数 void* memcpy(void* dest, const void* sour, size_t num); dest是目标地址,sour要拷贝的源地…

相比于内存函数,字符串函数和字符函数是对字符串和字符进行操作,内存函数是对内存进行操的。下面跟大家分享我学到的几个内存函数。

memcpy函数

void* memcpy(void* dest, const void* sour, size_t num);
dest是目标地址,sour要拷贝的源地址,num是要拷贝的字节数
因为内存函数是对内存进行操作,如果对内存进行操作就不用受制于数据的类型,所以这里使用void类型的指针因为void可以接受任何类型的指针便于操作。

memcpy函数的作用是从source的位置开始向后复制num个字节的数据到dest指向的内存位置,当遇到\0的时候停下来,如果source和dest在内存中的地址有重叠,复制的结果是未知的。

memcpy函数的使用

int main()
{int arr1[100] = { 0 };int arr2[100] = { 1,2,3,4,5 };memcpy(arr1, arr2, 20);//一个int类型是4个字节for (int i = 0; i < 5; i++){printf("%d ", arr1[i]);//输出结果为1 2 3 4 5}return 0;
}

memcpy函数的模拟

void* my_memcpy(void* dest, const void* sour, size_t num)
{char* ret = dest;//首先存一下dest的首地址,//这里为了提高模拟度因为在库函数里memcpy函数返回值就是目标函数的首地址assert(dest != NULL);assert(dest != NULL);int count = num;//因为是对内存进行操作所以需要一个字节一个字节的交换while (count--){*((char*)dest) = *((char*)sour);(char*)dest = ((char*)dest) + 1;(char*)sour = ((char*)sour) + 1;}return ret;
}

memmove函数

void * memmove ( void * dest, const void * sour, size_t num );
函数参数中的dest,sour,num于memcpy函数的参数相同

memmove函数就是用来复制出现内存重叠的情况。

memmove函数的使用

int main()
{int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };memmove(arr, arr + 2, 20);for (int i = 0; i < 10; i++){printf("%d ", arr[i]);}return 0;
}
这里就出现了内存重叠的情况将 3 4 5 6 7 放到1 2 3 4 5 的位置上
其中替换的部分 3 4 5 是的内存是重叠的memmove就是用来处理这种情况

memmove函数的模拟 

memmove函数的模拟相对于memcpy函数的模拟来说相对麻烦一些,分为一下三种情况下面我们来一个一个分析。

 第一种情况

第二种情况 

第三种情况 

代码部分

void* my_memmove(void* dest, const void* sour, size_t num)
{void* ret = dest;//记录目标位置的首地址//首先防止传进来的指针不为空assert(dest != NULL);assert(sour != NULL);//通过分析三种情况我们会发现如果dest指针小于sour指针就从前往后换,//如果dest指针大于sour就需要从后往前换//如果dest的指针大于sour+num从后往前或者从前往后都一样//判断dest和sourif (dest > sour){while (num--){*(((char*)dest) + num) = *(((char*)sour) + num);}}else if(dest <= sour || (char*)dest >= (char*)sour + num){while (num--){*((char*)dest) = *((char*)sour);(char*)dest = ((char*)dest) + 1;(char*)sour = ((char*)sour) + 1;}}return ret;//返回目标首地址
}
int main()
{int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };my_memmove(arr, arr + 2, 20);for (int i = 0; i < 10; i++){printf("%d ", arr[i]);}return 0;
}

memset函数

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

void * memset ( void * ptr, int value, size_t num );
ptr要修改内存位置的首地址,value要修改成的内容,num要修改的字节数

memset函数的使用

int main()
{char prt[] = "Hello Word";memset(prt, 'x', 5);printf("%s", prt);//输出结果为:xxxxx Wordreturn 0;
}

memcmp函数

memcmp函数用来比较从prt1和prt2指针指向的位置开始,往后m个字节的内容进行比较,如果prt1大于prt2就返回一个非零的值,反之小于就返回小于零的值,如果等于就返回零。

memcmp函数的使用

int main()
{char buf1[] = "asdfg";char buf2[] = "asdfi";int i = memcmp(buf1, buf2, 5);printf("%d\n", i);if (i == 0){printf("buf1=buf2\n");}else if (i>0){printf("buf1>buf2\n");}else if (i<0){printf("buf1<buf2\n");}return 0;
}

这些就是我所学到的C语言重的内存函数,请大佬们多多指错,感谢!

http://www.ds6.com.cn/news/116487.html

相关文章:

  • 安徽淮北发现一例石家庄百度快速排名优化
  • 什么样的网站开发比较吃香百度的排名规则详解
  • 企业网站建设 深圳网络营销平台名词解释
  • 沂南网站优化推广百度热搜榜小说排名
  • 图书馆网站建设惠州seo外包公司
  • 个人网站需要公安备案吗seo顾问服务咨询
  • 北京网站建设 网站维护网站关键词优化报价
  • 谢岗镇网站仿做黄页引流推广网站
  • 公司网站建设合同模板百度广告投诉电话
  • 网站备案可以自己备案吗设计一个简单的网页
  • 泰安做网站公司中央新闻频道直播今天
  • 免费网站建设视频seo推广的常见目的有
  • 国外空间怎么上传网站百度云搜索引擎入口百度网盘
  • 网站评估做的好不好网站制作优化
  • angularjs做网站接app推广接单平台
  • 重庆设计网站windows优化大师有哪些功能
  • 厦门网站建设哪家便宜新手做销售怎么开发客户
  • 做网站纸箱关键词杭州seo博客
  • 全套网站开发八零云自助建站免费建站平台
  • asp网站建设mdb文件怎么做电商
  • 腾宁科技做网站399元全包中国网民博客 seo
  • 金溪网站建设制作上海网站seo外包
  • 律师做网站有用运用搜索引擎营销的案例
  • 设计类比赛网站东莞网站推广软件
  • 深圳网站建设骏域网站建设南京百度推广优化
  • 做信息图的免费网站游戏推广拉人渠道
  • 顺德手机网站设计价位小红书信息流广告
  • 邓州做网站seo要点
  • 制作一个私人网站怎么申请域名郑州网络营销推广
  • 呼和浩特企业网站制作百度普通下载