用C语言实现my_memcmp

本文介绍了如何实现一个简单的内存比较函数`my_memcmp`,该函数用于比较两个内存区域的字节序列。在示例中,通过比较两个整型数组的前9个元素来展示其工作原理。同时,文章还提及了大小端存储模式的概念,即在内存中如何存储数据的高低位。最后,提供了使用`my_memcmp`比较字符串的注释代码段,进一步解释了函数的用途。
摘要由CSDN通过智能技术生成

 int memcpy(const void* ptr1, const void* ptr2, size_t num);

从ptr1和ptr2指向的位置开始比较大小

返回值:

ptr1 > ptr2, 返回大于0的数

ptr1 < ptr2, 返回小于0的数

ptr1 == ptr2, 返回等于0的数

 大小端存储模式:

大端存储模式:低权值(字节)存储在高地址,高权值(字节)存储在低地址

小端存储模式:低权值(字节)存储在低地址,高权值(字节)存储在高地址

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

int my_memcmp(const void* a1, const void* a2, int count){
	assert(a1 && a2);//断言
	
	while(count--){
		if( *(char*)a1 == *(char*)a2 ){
			(char*)a1++;
			(char*)a2++;
		}else if(*(char*)a1 > *(char*)a2 ){
			return 1;
		}else{
			return -1;
		}
	}
	return 0; //相等的情况
}

int main(){

	//内存存储,小端存储模式 低字节放在低地址,高字节放在高地址
	//a1 01 00 00 00  02 00 00 00  03 00 00 00  04 00 00 00   05 00 00 00  
	//a2 01 00 00 00  02 00 00 00  04 00 00 00  03 00 00 00   05 00 00 00

	int a1[] = {1,2,3,4,5};

	int a2[] = {1,2,3,3,5};
	int ret = my_memcmp(a1,a2,9);
	printf("%d ",ret);
	return 0;
}


//比较字符串 

/*int main(){
	char* p1 = "abcd";
	char* p2 = "abcdef";
	int ret = my_memcmp(p1,p2,5);
	printf("%d ",ret);
}*/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值