静态变量/static

来自Microduino Wikipedia
Pppeng讨论 | 贡献2016年5月23日 (一) 02:48的版本
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

静态变量(static)

static关键字用于创建只对某一函数可见的变量。然而,和局部变量不同的是,局部变量在每次调用函数时都会被创建和销毁,静态变量在函数调用后仍然保持着原来的数据。

静态变量只会在函数第一次调用的时候被创建和初始化。

  • 例子
/* RandomWalk
* Paul Badger 2007
* RandomWalk函数在两个终点间随机的上下移动
* 在一个循环中最大的移动由参数“stepsize”决定
*一个静态变量向上和向下移动一个随机量
*这种技术也被叫做“粉红噪声”或“醉步”
*/
 
#define randomWalkLowRange -20
#define randomWalkHighRange 20
 
int stepsize;
 
INT thisTime;
int total;
 
void setup()
{
     Serial.begin(9600);
}
 
void loop()
{        //  测试randomWalk 函数
  stepsize = 5;
  thisTime = randomWalk(stepsize);
serial.println(thisTime);
   delay(10);
}
 
int randomWalk(int moveSize){
  static int  place;     // 在randomwalk中存储变量
                         // 声明为静态因此它在函数调用之间能保持数据,但其他函数无法改变它的值
 
  place = place + (random(-moveSize, moveSize + 1));
 
  if (place < randomWalkLowRange){                    //检查上下限
    place = place + (randomWalkLowRange - place);     // 将数字变为正方向
}
  else if(place > randomWalkHighRange){
    place = place - (place - randomWalkHighRange);     // 将数字变为负方向
}
 
  return place;
}

[返回Arduino语法手册]