指针对比数组内容(C语言+嵌入式)

前言

假如我们有两个数组,我们该如何才可以对比两个数组内容是否相同!!!

完成这个函数的编写你可以了解指针的基本用法!

不要搬运了,不要搬运了,不要搬运了。好多人现在都不具备独立写代码的能力了!

题目

使用环境:C++

载体软件:Keil5

内容:有两个32字节内容的数组,若两个数组内容相同返回1,不同返回0。

要求:需要使用到指针。

编程

我们编程讲究分部编程,讲究区块编程。

没有人可以重头编写到尾,我们能够做到的是一块一块,由浅入深的编程。

1   我们先列出题目要求。

const uint32_t Buffer[32]={.............};
uint32_t Bufferl[32]={..................};

这里的省略号省略掉32字节的内容 ,将数组前加入const,会将该数组内容写入内部FLASH,不加const数组只会写入内部SRAM。

2   接下来我们构建函数框架。

uint8_t cBuffer()
{
	
	return 0;
	
	return 1;
}

这样子就有了返回值。 

3   我们需要使用到指针,所以就需要有地址的偏移以及地址的大小。

#define  BufferSIZE   32

const uint32_t Buffer[32]={.............};
uint32_t Bufferl[32]={..................};

uint8_t cBuffer(const uint32_t *pBuffer,uint32_t *pBufferl,BufferSIZE)
{
	
	return 0;
	
	return 1;
}

到这里我们补充了函数中出现的变量!看到这里是不是已经非常清晰了呢!

4   现在我们开始构建指针的增量与指针指向地址的内容。

pBuffer++;
pBufferl++;
*pBuffer;
*pBufferl;

*p指的是指针地址的内容。

p指的是指针的地址。

所以要进行指针内容的对比就需要*。而对比完进行下一次对比时就需要p++。

5   完成一次指针的对比

if(*pBuffer!=*pBufferl)
	{
	return 0;
	}
	return 1;

6   进行到第二次比较

if(*pBuffer!=*pBufferl)
	{
	return 0;
	}
	pBuffer++;
    pBufferl++;
	return 1;

7   但是我们需要比较BufferSIZE次

	while(BufferSIZE--)
	{
	if(*pBuffer!=*pBufferl)
	{
	return 0;
	}
	pBuffer++;
    pBufferl++;
	return 1;
	}

当自减32次时,其值为0,跳出while循环。

8   完成所有要求,我们就需要封装好!

#define  BufferSIZE   32

const uint32_t Buffer[32]={.............};
uint32_t Bufferl[32]={..................};

uint8_t cBuffer(const uint32_t *pBuffer,uint32_t *pBufferl,BufferSIZE)
{
	while(BufferSIZE--)
	{
	if(*pBuffer!=*pBufferl)
	{
	return 0;
	}
	pBuffer++;
    pBufferl++;
	return 1;
	}
}

看到这里,说明你已经完成了一个逻辑非常简单的比较函数了。但是并没有结束,如何在main函数中使用才是关键!!!!

9   使用

buffersize=BufferSIZE;
cc=cBuffer( Buffer, Bufferl,buffersize);

要记得声明函数中的变量不要与使用函数中使用的变量同名!!!!!

 结语

编写函数能力非常重要,即使现在又非常多的现成代码!但是未来的新语言出现时,我们需要依靠自己学习!

最后,希望多多支持下我的莆田鞋小店

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值