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定义局部静态变量的主要内容,如果未能解决你的问题,请参考以下文章

局部变量,实例变量,静态变量

在C语言中具体静态变量static要这么去用?

static在c语言中是啥意思

Java中成员变量局部变量全局变量静态变量成员变量

Java中成员变量局部变量全局变量静态变量成员变量

static