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

网站页面设计主要包括资源猫

网站页面设计主要包括,资源猫,昆明网站seo优化,wordpress怎么登陆后台strcpy拷贝的仅仅是字符串#xff0c;但是内存中的数据不仅仅是字符#xff0c;所以就有了memcpy函数 1. memcpy void *memcpy #xff08;void * destination #xff0c;const void * source , size_t num) 函数memcpy从source的位置开始向后拷贝num个字节的数据到desti… strcpy拷贝的仅仅是字符串但是内存中的数据不仅仅是字符所以就有了memcpy函数 1. memcpy void *memcpy void * destination const void * source , size_t num) 函数memcpy从source的位置开始向后拷贝num个字节的数据到destination的内存位置 #includestring.h int main() {int arr1[10] { 0 };int arr2[] { 1,2,3,4,5 };//把arr2中的前5个整形的数据拷贝放到arr1中memcpy(arr1, arr2, 20);return 0; } 可以看到前5个整形都拷贝过来了  memcpy函数的模拟实现 1一个字节一个字节的拷贝destsrc转为char * eg如果拷贝7个字节两个int *类型指针不能操作 2char *dest不能这样写因为的优先级高于强制类型转换 相当于先对原类型进行再进行进行强转 前置char *)dest虽然C语言中可以但是改为c就不能运行所以还是正常写1 #includestring.h #includeassert.h void* my_memcpy(void* dest, const void* src, size_t sz) {void * retdest;assert(dest src);while (sz--){*(char*)dest *(char*)src;dest (char*)dest 1;src (char*)src 1;}return ret; } 一个数组arr{12345678910}如果想在自身的基础上进行拷贝即把12345拷贝到34567的位置上想得到结果12123458910 但是得到的结果却是1 2 1 2 1 2 1 8 9 10 我们就发现不重叠内存的拷贝可以使用memcpy 重叠内存的拷贝使用memmove函数 上面其实是标准规定但是实际在VS2022这个环境中memcpy也能实现重叠内存的拷贝 其他平台不一定 #includestdio.h #includestring.h #includeassert.h void* my_memcpy(void* dest, const void* src, size_t sz) {assert(dest src);while (sz--){*(char*)dest *(char*)src;dest (char*)dest 1;//这里不能写成char*dest强制类型转化是临时的的时候dest并不一定是char*类型的src (char*)src 1;} } int main() {int arr[] { 1,2,3,4,5,6,7,8,9,10 };my_memcpy(arr 2, arr, 20);for (int i 0; i 10; i){printf(%d , arr[i]);}return 0; } 2. memmove void *memmovevoid * destination const void * source , size_t num) 参数和memcpy一样但是memmove可以实现重叠内存的拷贝 memmove函数的模拟实现 这里不考虑直接开辟一个相同的空间再进行拷贝元素 讨论 destsrc:只能从前向后拷贝 destsrc:只能从后向前拷贝 dest和src不相干的时候从后往前或者从前往后都可以 #includestdio.h #includeassert.h void* my_memmove(void* dest, const void* src, size_t sz) {void* ret dest;assert(dest src);if (dest src){//前-后while (sz--){*(char*)dest *(char*)src;dest (char*)dest1;src (char*)src1;}}else{//后-前while (sz--){*((char*)dest sz) *((char*)src sz);}}return ret; } int main() {int arr[20] { 1,2,3,4,5,6,7,8,9,10 };my_memmove(arr , arr2, 20);for (int i 0; i 10; i){printf(%d , arr[i]);}return 0; } 3. memcmp int memcmp ( const void * ptr1,const void *( ptr2  ,  size_t num ) 类似strcmp函数memcmp是一对字节一对字节进行比较比较num个字节ACSII值 1返回值 如果返回值 0则表示 str1 小于 str2如果返回值 0则表示 str1 大于 str2如果返回值 0则表示 str1 等于 str2 #includestdio.h #includestring.h int main() {int arr1[] { 1,2,3,4,5,6,7 };//01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 06 00 00 00 07 00 00 00int arr2[] { 1,2,3,0x11223304 };//01 00 00 00 02 00 00 00 03 00 00 00 04 33 22 11 int ret memcmp(arr1, arr2, 13);printf(%d\n, ret); } 上面这个代码虽然arr1的元素多但是比较前13个字节的大小都一样那么ret0 4. memset void *memset( void *dest, int c, size_t count )  复制字符c一个无符号字符到参数str所指向的字符串的前n个字符 初始化前count个字节为c 是以字节为单位设置内存的 eg1:将hello world中的wor改为xxx #includestdio.h #includestring.h int main() {char arr[] hell0 world;memset(arr 6, x, 3);printf(%s\n, arr);return 0; } eg2 思考这个代码将arr改为了啥 #includestdio.h #includestring.h int main() {int arr[10] { 0 };memset(arr, 1, 40);return 0; } 每一个int类型的元素的每一个字节都改为了1 所以想把数组每一个元素都初始化为1用memset函数是不可能实现的 但是可以都初始化为0 本次内容就到此啦欢迎评论区或者私信交流觉得笔者写的还可以或者自己有些许收获的麻烦铁汁们动动小手给俺来个一键三连万分感谢 !
http://www.w-s-a.com/news/842511/

相关文章:

  • 织梦免费企业网站做网站时,404网页如何指向
  • 摄影工作室网站源码百度为什么会k网站
  • 哪个网站有淘宝做图的素材网站分享做描点链接
  • 做哪个网站零售最好网站空间在哪里
  • 荆州网站建设多少钱南阳做网站推广
  • 网站代理打开个人网站设计源码
  • 做php网站的话要学什么语言wordpress搜索不到
  • 金华官方网站建设网络营销策划模板
  • 网站开发到上线在线生成小程序
  • 动易网站设计方案郑州营销网站建设
  • 怎么上网站做简易注销的步骤郑州大学现代远程教育《网页设计与网站建设》课程考核要求
  • 新乡网站建设新乡长沙本地论坛有哪些
  • 潍坊中企动力做的网站怎么样wordpress接入微博
  • 网站开发者所有权归属网站项目建设的必要性
  • 菜鸟网站编程广州网站设计权威乐云践新
  • 网站做接口到app 价格大地资源免费视频观看
  • 怎么给钓鱼网站做防红网站建设相关的
  • 教育培训的网站建设湖南网站建设小公司
  • 福建南平网站建设创意交易平台网
  • 做直播网站要哪些技术内容营销理论
  • 价格划算的网站开发怎么找有赞做网站
  • 做网站店铺图片用什么软件网络营销方案格式
  • 做外贸要自己建网站吗有效的网络营销方式
  • 精通网站开发书籍做网站获取手机号码
  • 论坛做视频网站有哪些济南新站seo外包
  • 哪类型网站容易做冷水滩做微网站
  • 搭建企业网站流程保定徐水网站建设
  • 建设单位到江川区住房和城乡建设局网站伦敦 wordpress 设计
  • 响应式网站的服务麦德龙网站建设目标
  • 做国外单的网站叫什么海南省海口市网站建设