嵌入式系统C语言编程的心得体会(指针篇)

来源:互联网 发布:gis平台软件 编辑:程序博客网 时间:2024/04/29 12:38
学习使用C语言不能不说到指针,指针的应用是C语言的特点也是精髓所在。没掌握指针的使用方法,也就说明你不会使用C语言。当然使用手法灵活多变,并不见得都要学会,只是说在写程序的时候要有这种思想体现在程序里。其实程序写的是否巧妙很大程度上就体现在指针应用上。
   嵌入式C语言编程里面的指针和标准的C概念上是一致的,但是由于使用处理器的构架不同,在实现表示实际对象上略有差别。这个集中体现在有些嵌入式处理器比如AVR单片机采用的是“哈佛”结构,数据和程序总线是分离的,因此,指向数据存储区的的指针和指向程序存储区的指针调用的指令是不同的,位数也是不同的。当然这些由编译器来完成,但是我们在使用时,心中要有数,因为在指针传递的过程中要注意传递的值是否与申明的位置一致。不然可能出现错误。
   什么是指针呢,不同的人也有不同的理解。我认为指针就是地址,形象一点就门牌号。一个门牌号对应一个位置空间。使用指针的时候就是到相应的空间去取值。指针的内容是我们需要的值,指针本身是指向这个内容的一个门牌号(即地址)。使用指针的时候并不需要知道指针是什么,但是要清楚指针指向的位置内是什么。因为门牌号只是个号,我关心的是内容不是这个号,只是在传递信息的时候使用这样一个号会让传递变得容易。指针是如何让传递变得容易的呢?
   先看看C语言的函数传递关系。函数传递分两种,一种是参数,一种是返回值。传递进函数的参数可以很多,但是传递函数写多了,会对函数的使用造成很多不便,至少编写程序的时候打字都是很麻烦。而且会占用更多的内存空间,这样因为相同的信息传递源占用空间,传递地也占用了空间。(这是对参数数量大的情况来说,当然数量少就不见得是占用空间多,相反使用指针还可能占用更多的空间)。C语言里面规定传递返回值只能有一个,但是在实际应用的时候经常需要传递多个返回值,这个时候就可以使用指针方式,可以传递指针参数,直接修改相应存储位置上的值,也可以将传放返回参数结构的指针回传。但是要特别提醒的是,使用指针回传参数的时候传递的指针不能是函数内部的局部变量,因为当函数退出的时候,局部变量的空间回被收回,里面的值可能回被其他函数修改。因此需要使用指针方式的后,应该在调用函数的上一级以上的函数申明变量,然后传递该变量的指针。
   指针和数组的关系很微妙,我认为数组和指针在使用上有很多相同的地方,只是在不同场合表达不一样。当然数组没有指针灵活,数组只是指针应用中的一个特例。
   指针的分类和基本用法见C语言的经典书籍,这就不罗嗦了。要讲的就是介绍些应用实例,启发思路。只是是启发了我的思路。
   指针的总结,没有之前两篇好写,想来想起,现在还没水平提炼写可以通用的心得,所以只好改用介绍实例的方式了。下篇在开始介绍。
原创粉丝点击