前言
假如我们有两个数组,我们该如何才可以对比两个数组内容是否相同!!!
完成这个函数的编写你可以了解指针的基本用法!
不要搬运了,不要搬运了,不要搬运了。好多人现在都不具备独立写代码的能力了!
题目
使用环境: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);
要记得声明函数中的变量不要与使用函数中使用的变量同名!!!!!
结语
编写函数能力非常重要,即使现在又非常多的现成代码!但是未来的新语言出现时,我们需要依靠自己学习!
最后,希望多多支持下我的莆田鞋小店