我们现在走在马路上,经常看到马路两侧有一些led点阵广

我们现在走在马路上,经常看到马路两侧有一些led点阵广

ID:35114096

大小:2.21 MB

页数:25页

时间:2019-03-18

我们现在走在马路上,经常看到马路两侧有一些led点阵广_第1页
我们现在走在马路上,经常看到马路两侧有一些led点阵广_第2页
我们现在走在马路上,经常看到马路两侧有一些led点阵广_第3页
我们现在走在马路上,经常看到马路两侧有一些led点阵广_第4页
我们现在走在马路上,经常看到马路两侧有一些led点阵广_第5页
资源描述:

《我们现在走在马路上,经常看到马路两侧有一些led点阵广》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、我们现在走在马路上,经常看到马路两侧有一些LED点阵广告牌,这些广告牌看起来绚烂夺目,非常吸引人,而且还会变化很多种不同的显示方式。本章我们就会学习到点阵LED的控制方式,按照惯例,先普及部分C语言知识。7.1 变量的作用域所谓的作用域就是指变量起作用的范围。变量按他的作用域可以分为局部变量和全局变量1.局部变量在一个函数内部声明的变量是内部变量,他只在本函数内有效,在此函数以外是不能使用的,这样的变量就是局部变量。此外,函数的形参也是局部变量,形参我们后边详细解释。比如上节课定义的unsigned

2、 long stopwatch = 0,这个变量是定义在main函数内部的,所以只能由main函数使用,中断函数就不能用这个变量。同理,我们如果在中断函数内部定义的变量,在main函数中也是不能使用的。2.全局变量在函数外声明的变量是全局变量。一个源程序文件可以包含一个或者多个函数,全局变量的作用范围是从它开始声明的位置一直到程序结束。比如上节课的unsigned char LedNumber[6] = {0}; 这个数组的作用域就是从开始定义的位置一直到程序结束,不管是main函数,还是中断函数I

3、nterruptTimer0,都可以直接使用这个数组。局部变量只有在声明它的函数范围内有效,而全局变量可以被作用域内的所有的函数直接引用。所以在一个函数内既可以使用本函数内声明的局部变量,也可以使用全局变量。在习惯上,我们把全局变量定义在我们程序所有函数的最前边。由于函数通常只能有一个返回值,但是我们希望一个函数运行完了可以提供多个结果值给我们使用的时候,我们就可以利用全局变量来实现。但是考虑到全局变量的一些特征,应该限制全局变量的使用,过多使用全局变量也会带来一些问题。(1)全局变量可以被作用域内

4、所有的函数直接引用,可以增加函数间数据联系的途径,但同时加强了函数模块之间的数据联系,使这些函数的独立性降低,对其中任何一个函数的修改都可能会影响到其他函数,函数之间过于紧密的联系不利于程序的维护。(2)全局变量的应用会降低函数的通用性,函数在执行的时候过多依赖于全局变量,不利于函数的重复利用。我们现在程序编写比较简单,就一个.c文件,将来以后我们要学到一个程序中有多个.c文件,当一个函数被另外一个.c文件调用的时候,必须将这个全局变量的变量值一起移植,而全局变量不只被一个函数调用,这样会引起一些不

5、可预见的后果。(3)过多使用全局变量会降低程序的清晰度,使程序的可读性下降。在各个函数执行的时候都可能改变全局变量值,往往难以清楚的判断出每个时刻各个全局变量的值。(4)定义全局变量会直接占用单片机的内存单元,而局部变量只有进入定义局部变量的函数内才会分配内存,函数退出后会自动释放所占用的内存。所以大量的全局变量会额外增加内存占用。综上所述之原因,我们一项原则就是尽量减少全局变量的使用,能用局部变量代替的就不用全局变量。还有一种特殊情况,大家在看别人程序的时候注意。C语言是允许局部变量和全局变量同名

6、的,他们定义后在内存中占有不同的内存单元。如果在同一源文件中,全局变量和局部变量同名,在局部变量作用域范围内,只有局部变量有效,全局变量不起作用,也就是说局部变量具有更高优先级。但是我们在编写程序的时候,尽量不要让变量重名,以避免不必要的误解。.2 变量的存储类别变量的存储类别分为自动、静态、寄存器和外部这四种。其中后两种我们暂不介绍,主要是自动变量和静态变量这两种。函数中的局部变量,如果不加static这个关键字来进行特别声明,都属于自动变量,也叫做动态存储变量。这些存储类别的变量,在调用该函数的

7、时候系统会给他们分配存储空间,在函数调用结束后会自动释放这些存储空间。动态存储变量的关键字是auto,但是这个关键字是可以省略的,所以我们平时都不用。那么与动态变量对应的就是静态变量。首先,全局变量均是静态变量,此外,还有一种特殊的局部变量也是静态变量。即我们在局部变量声明前边加上static这个关键字,加上这个关键字的变量就称之为静态局部变量,他的特点是,在整个生存期中只赋一次初值,函数调用的时候,如果是第一次调用,它的值就是我们给定的那个初值;如果不是第一次调用,那么它的值就是上一次函数调用结束

8、后的值。在某一些场合中,一些变量只在一个函数中使用了,但是这个变量每次变化的值我们还想保存,如果定义成局部动态变量的话,每次进入函数后上一次的值就丢失了,如果定义成全局变量的话,又违背了我们上面提到的关于全局变量使用的一般原则,这个时候我们就可以定义成局部静态变量了。比如上节课中断程序中有一个用于动态刷新数码管控制的变量j,我们上节课的程序是定义成了全局变量,现在我们可以直接改成局部静态变量来试试。#include                //

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。