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作为局部变量的修饰词,其实功能实现了全局变量的功能,来系统还是需要给其划分动态存储空间。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值