数据结构(指针)实例分析---2020.3.5

前言

“指针是c语言的灵魂”

开始解析

就单片机来说,首先我们需要清楚一个问题,那就是在哪里来存储数据?
单片机存储数据有两个区域,分别是RAM(随机存储器)、ROM(只读存储器)。一般RAM这个区域是用来存放临时变量的,所以一般这种区域的数据掉电之后数据会丢失。所以我们在程序中定义的变量一般都会存放在RAM这个区域。

接下来通过一段代码让大家来清楚的了解为什么用指针,怎么用的。

//该函数作用返回数组里面的最大值和最小值
uchar tab[0,1,2,3,4,5,6,7,8,9];
void MAX_MIN(uchar *p_max,uchar *p_min){

  uchar max = 0;
  uchar min = 255;
  uchar i;
	
  for(i=0;i<10;i++)
	{
	
	if(max<tab[i])
		max = tab[i];
	if(min>tab[i])
		min = tab[i];
	
	}

  *p_max = max;
  *p_min = min;

}
//声明函数
MAX_MIN(&MAX,&MIN);

在讲这段代码之前,我们需要掌握几个知识点:

  1. char * p_max; 这个* p_max是指针变量,顾名思义,就是存放变量的地址,这个地址在单片机当中也是一个数,只不过这个数代表的是地址罢了。
  2. &MAX 相当于是取地址。将MAX所在的地址取出来。
  3. 最终 * p_max = &MAX,这样 * p_max这个指针变量就成功存放地址了。到时候在函数中使用* p_max就相当于对MAX进行操作了。
  4. 每一个数据都有一个地址,地址顾名思义就是存放数据的地方

//这个函数其实很简单,只是想通过这个函数来让大家来清楚指针是怎样用的。
//其实主题思想就是for循环这个部分,主要是在tab数组里面进行遍历操作,如果有数比最大的数大的话,那么最大数就变成这个数,同理,最小数也是如此。
//最终,* p_max和* p_min就作为这个函数的返回值,也相当于MAX和MIN这个变量存放的就是最大值和最小值了。

函数变形

void MAX_MIN(uchar *p_max,uchar *p_min,uchar *p_tab,uchar i){

  uchar max = 0;
  uchar min = 255;
  uchar j;
	
  for(j=0;j<i;j++)
	{
	
	if(max<*(p_tab+j))
		max = *(p_tab+j);
	if(min>*(p_tab+j))
		min = *(p_tab+j);
	
	}

}
//声明函数
MAX_MIN(&MAX,&MIN,&tab[0],10);

//这个函数变形其实也是为了使这个函数变成一个完整可移植的程序,移植就可以用,只是需要改变函数的入口参数。

其实指针简单使用的话就是这些,但是我们如果想要灵活使用指针的话,可能会用到双指针等操作,具体怎样使用在以后有时间会更新给大家,敬请期待!!!

好了,以上就是我对数据结构(指针)的理解,可能会有理解不对的地方,如果有,希望大家批评指正,谢谢!!!

发布了27 篇原创文章 · 获赞 56 · 访问量 4479

猜你喜欢

转载自blog.csdn.net/qq_40544107/article/details/104650590