今天小编要和大家分享的是控制,MCU相关信息,接下来我将从单片机c语言的自动变量和静态变量解析,3《函数的基本性质》(单调性)ppt公开课课件这几个方面来介绍。

控制,MCU相关技术文章单片机c语言的自动变量和静态变量解析3《函数的基本性质》(单调性)ppt公开课课件

控制,MCU相关技术文章单片机c语言的自动变量和静态变量解析

变量的存储类别分为自动、静态、寄存器和外部这四种。其中后两种我们暂不介绍,主要是自动变量和静态变量这两种。

函数中的局部变量,如果不加 static 这个关键字来修饰,都属于自动变量,也叫做动态存储变量。这种存储类别的变量,在调用该函数的时候系统会给他们分配存储空间,在函数调用结束后会自动释放这些存储空间。动态存储变量的关键字是 auto,但是这个关键字是可以省略的,所以我们平时都不用。

那么与动态变量对应的就是静态变量。首先,全局变量均是静态变量,此外,还有一种特殊的局部变量也是静态变量。即我们在定义局部变量时前边加上 static 这个关键字,加上这个关键字的变量就称之为静态局部变量,它的特点是,在整个生存期中只赋一次初值,在第一次执行该函数时,它的值就是给定的那个初值,而之后在该函数所有的执行次数中,它的值都是上一次函数执行结束后的值,即它可以保持前次的执行结果。

有这样一种情况,某个变量只在一个函数中使用,但是我们却想在函数多次调用期间保持住这个变量的值而不丢失,也就是说在该函数的本次调用中该变量值的改变要依赖与上一次调用函数时的值,而不能每次都从初值开始。如果我们使用局部动态变量的话,每次进入函数后上一次的值就丢失了,它每次都从初值开始,如果定义成全局变量的话,又违背了我们上面提到的尽量减少全局变量的使用这条原则,那么此时,局部静态变量就是最好的解决方案了。

比如第六章最后的例程中有一个控制数码管动态扫描显示用的索引变量 i,我们当时就是定义成了全局变量,现在我们就可以改成局部静态变量来试试。

单片机c语言的自动变量和静态变量解析

#include

sbit ADDR0 = P1^0;

sbit ADDR1 = P1^1;

sbit ADDR2 = P1^2;

sbit ADDR3 = P1^3;

sbit ENLED = P1^4;

unsigned char code LedChar[] = { //数码管显示字符转换表