“静态变量/static”的版本间的差异
第1行: | 第1行: | ||
静态变量(static) | 静态变量(static) | ||
+ | |||
static关键字用于创建只对某一函数可见的变量。然而,和局部变量不同的是,局部变量在每次调用函数时都会被创建和销毁,静态变量在函数调用后仍然保持着原来的数据。<br> | static关键字用于创建只对某一函数可见的变量。然而,和局部变量不同的是,局部变量在每次调用函数时都会被创建和销毁,静态变量在函数调用后仍然保持着原来的数据。<br> | ||
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; }