当前位置:首页 » 《随便一记》 » 正文

类字符串函数---内存函数的使用以及模拟实现(下)_执久呀的博客

12 人参与  2021年11月10日 17:23  分类 : 《随便一记》  评论

点击全文阅读


 目录

一、前言

二、 memmove和memcmp函数

1.memmove函数(内存移动)

函数的使用:

memmove函数的模拟实现

2、memcmp函数(内存比较)

函数的使用:


一、前言

     前面我们已经讲了memcpymemset函数的使用,相信小伙伴们对这两个函数已经

非常熟悉了,(如果还不是很熟悉,可以看看上篇)那么我们现在要学习另外两个函数

memmovememcmp


本章内容memmove和memcmp函数

二、 memmove和memcmp函数

1.memmove函数(内存移动)

函数参数形式:void*memmove(void*destination,const void*source,size_t num);

其中num是无符号的整数,单位是字节。memcpy函数不能实现重复部分的拷贝,

如在同一个数组中无法实现,但是memmove可以实现重复内存拷贝。也可以说

memcpy是memmove的子集。

函数的使用

#include<stdio.h>

#include<string.h>

int main()
{
	int arr1[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
     
	memmove(arr1,arr1+2,20);

	for (int i = 0; i < 10; i++)
	{

		printf("%d ", arr1[i]);//34567678910

	}

	return 0;
}

memmove函数的模拟实现

#include<stdio.h>
#include<assert.h>

void*my_memmove(void*dest, const void*src, size_t num)
 {
	assert(dest&&src);
	void*ret = dest;
	
	if (dest < src)
	{
		while (num--)
		{
			*(char*)dest = *(char*)src;
			++(char*)dest;
			++(char*)src;

		}
	}
	else
	{
		while (num--)
			{
				*((char*)dest + num) = *((char*)src + num);
				--(char*)dest;
				--(char*)src;
			}

	}

	return ret;

 }

int main()
{
	int arr1[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

	my_memmove(arr1, arr1+2, 5 * sizeof(int));
	for (int i = 0; i < 10; i++)
	{

		printf("%d", *(arr1 + i));//34567678910

	}
	return 0;
}


2、memcmp函数(内存比较)

  memcpy函数参数形式int memcmp(const void *str1,const void* str2,size_t num);

这个函数的返回类型是int ,nu单位是字节(一个int 4字节),str1大于str2返回一个

大于0的数,str1小于str2则返回一个小于0的数,等于则返回0。


#include<stdio.h>

#include<string.h>

int main()
{
	int arr1[10] = { 1, 2, 3, 4, 5, 6, 7 };

	int arr2[10] = { 1, 2, 3, 4, 5, 8, 9 };

	int kc = memcmp(arr1, arr2, 20);

	printf("%d", kc);

	return 0;
}

注意:本电脑是小端存储模式(以后会讲),简单的说就是高位存高地址,大端则相反如1为

00000001,小端模式下为01000000。

简单的说一下:如图


 所以说在整形数组比较非一个整数的字节大小端就有区别了

在小端中:

#include<stdio.h>

#include<string.h>

int main()
{
	int arr1[10] = { 1, 2, 3, 4, 5, 6, 7 };

	int arr2[10] = { 1, 2, 3, 4, 5, 8, 9 };

	int kc = memcmp(arr1, arr2, 21);

	printf("%d", kc);

	return 0;
}

 结果是一个小于0的数,vs编辑器默认是-1,原因在于前面20个字节相同,但是第21个字节,

如图:

 所以arr1小于arr2,返回小于0的数,如果是大端就不一样了,这里就不说那么多了,下次会涉及。

这期结束了,兄弟们一键三连


点击全文阅读


本文链接:http://zhangshiyu.com/post/30742.html

函数  字节  小于  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 完结文末日重生我囤十亿物资杀穿尸潮列表_完结文末日重生我囤十亿物资杀穿尸潮(林野苏晴)
  • 小说江诗云路明哲小说已更新+番外篇章(年少的爱终将散去)纯净阅读
  • 真千金伪装大学生在自家公司实习让狗爬后一口气看完_宋氏小林小姑娘高分神作_小说后续在线阅读_无删减免费完结_
  • 萧逸尘,楚璃,叶紫嫣爱恨决绝,此生不见番外(爱恨决绝,此生不见)TXT+后续+结局在线阅读
  • 假千金要交换人生?我抱着空间做首富爽文_苏木青赵景城虐心反转_小说后续在线阅读_无删减免费完结_
  • 温时雨谢远之续集(清风难渡无缘人)全本完整免费版_起点章节+后续(温时雨谢远之)
  • 订婚两个月后,未婚夫要摆脱包办婚姻精心打造_肖明宝宝宾客故事会_小说后续在线阅读_无删减免费完结_
  • 霍景琛,苏晚,林深昔年请深如海,终不敌薄凉附加(霍景琛,苏晚,林深)(昔年请深如海,终不敌薄凉)全本浏览阅读连载中
  • 新章速递汤安甯,白子奕,汤贝贝是什么小说(结婚十年,回归家庭的老婆在外有二胎了)完本阅读无广告(结婚十年,回归家庭的老婆在外有二胎了)
  • 娇牛马导师偷我论文99篇成功升博导,我让他牢底坐穿精校文本_周老师师姐师兄爽文_小说后续在线阅读_无删减免费完结_
  • 独家顾宇,罗薇:结局+番外精编之作(资助生装阔气,我可不参加)电子书畅享阅读
  • 宗门全员重生,小师妹摆烂不干了(君拂君芙蓉)_宗门全员重生,小师妹摆烂不干了

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1