Arduino使用static定义局部静态变量
Posted perseverance52
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Arduino使用static定义局部静态变量相关的知识,希望对你有一定的参考价值。
Arduino使用static定义局部静态变量
static在定义局部静态变量
-
局部静态变量存储在静态存储区,在程序运行期间都不会释放,只在声明时进行初始化,而且只能初始化一次,如果没有初始化,其自动初始化为0或空字符。具有局部变量的“记忆性”和生存周期“全局性”特点。
-
局部变量的“记忆性”是指在两次函数调用时,第二次调用开始时,变量能够保持上一次调用结束数的值。
-
不带修饰词
static
效果:
void setup() {
Serial.begin(115200);
}
void staticShow()
{
int a=10;
Serial.println(String("a的值:")+a);
a += 10;
}
void loop() {
staticShow();delay(3000);
}
- 编译信息:
项目使用了 3232 字节,占用了 (10%) 程序存储空间。最大为 30720 字节。
全局变量使用了208字节,(10%)的动态内存,余留1840字节局部变量。最大为2048字节。
- 打印信息:
==局部变量使用修饰词static
==
void setup() {
Serial.begin(115200);
}
void staticShow()
{
static int a=10;
Serial.println(String("a的值:")+a);
a += 10;
}
void loop() {
staticShow();delay(3000);
}
- 编译信息:
项目使用了 3258 字节,占用了 (10%) 程序存储空间。最大为 30720 字节。
全局变量使用了210字节,(10%)的动态内存,余留1838字节局部变量。最大为2048字节。
- 从编译后的信息可以看到,对比不使用
static
修饰词的全局变量使用的动态内存,要多出2个字节的数。 - 打印结果,可以看到局部变量值是累加的,说明使用
static
时,需要给变量划分一块固定的存储空间的,用于下一次调用。
- 总结
- 虽然使用
static
作为局部变量的修饰词,其实功能实现了全局变量的功能,来系统还是需要给其划分动态存储空间。
以上是关于Arduino使用static定义局部静态变量的主要内容,如果未能解决你的问题,请参考以下文章