用户工具

站点工具


reference:language:static

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

reference:language:static [2017/04/07 10:03] (当前版本)
行 1: 行 1:
 +====== Static ======
 +
 +static关键字用于创建只对某一函数可见的变量。然而,和局部变量不同的是,局部变量在每次调用函数时都会被创建和销毁,静态变量在函数调用后仍然保持着原来的数据。
 +
 +静态变量只会在函数第一次调用的时候被创建和初始化。
 +===== 例子 =====
 +<code cpp> ​
 +/* 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;
 +}
 +</​code> ​
  
reference/language/static.txt · 最后更改: 2017/04/07 10:03 (外部编辑)