[变量范围和限定符]
说明
static
关键字用于创建仅对一个函数可见的变量。然而,与每次调用函数时都会创建和销毁的局部变量不同,静态变量在函数调用之后仍然存在,在函数调用之间保留它们的数据。
声明为静态的变量只会在第一次调用函数时创建和初始化。
示例代码
/* RandomWalk
Paul Badger 2007
RandomWalk wanders up and down randomly between two
endpoints. The maximum move in one loop is governed by
the parameter "stepsize".
A static variable is moved up and down a random amount.
This technique is also known as "pink noise" and "drunken walk".
*/
#define randomWalkLowRange -20
#define randomWalkHighRange 20
int stepsize;
int thisTime;
void setup() {
Serial.begin(9600);
}
void loop() {
// test randomWalk function
stepsize = 5;
thisTime = randomWalk(stepsize);
Serial.println(thisTime);
delay(10);
}
int randomWalk(int moveSize) {
static int place; // variable to store value in random walk - declared static so that it stores
// values in between function calls, but no other functions can change its value
place = place + (random(-moveSize, moveSize + 1));
if (place < randomWalkLowRange) { // check lower and upper limits
place = randomWalkLowRange + (randomWalkLowRange - place); // reflect number back in positive direction
}
else if (place > randomWalkHighRange) {
place = randomWalkHighRange - (place - randomWalkHighRange); // reflect number back in negative direction
}
return place;
}
相关用法
- Arduino string用法及代码示例
- Arduino sq()用法及代码示例
- Arduino shiftOut()用法及代码示例
- Arduino scope用法及代码示例
- Arduino setWireTimeout()用法及代码示例
- Arduino serialEvent()用法及代码示例
- Arduino setup()用法及代码示例
- Arduino switch...case用法及代码示例
- Arduino short用法及代码示例
- Arduino sizeof()用法及代码示例
- Arduino long用法及代码示例
- Arduino Arduino_EMBRYO_2 - setLengthXY()用法及代码示例
- Arduino ~用法及代码示例
- Arduino ArduinoBLE - bleDevice.advertisedServiceUuidCount()用法及代码示例
- Arduino const用法及代码示例
- Arduino Ethernet - server.begin()用法及代码示例
- Arduino ArduinoBLE - BLEService()用法及代码示例
- Arduino digitalWrite()用法及代码示例
- Arduino ArduinoBLE - bleCharacteristic.subscribe()用法及代码示例
- Arduino Servo - attach()用法及代码示例
- Arduino write()用法及代码示例
- Arduino Arduino_LSM9DS1 - readGyroscope()用法及代码示例
- Arduino ArduinoSound - FFTAnalyzer.input()用法及代码示例
- Arduino MKRGSM - gprs.attachGPRS()用法及代码示例
- Arduino WiFiNINA - WiFi.config()用法及代码示例
注:本文由纯净天空筛选整理自arduino.cc大神的英文原创作品 static。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。