Kvalifikátory variabilného rozsahu (Variable scope qualifiers) →static
Popis :
(static) sa používa na vytváranie premenných, ktoré sú viditeľné iba pre jednu funkciu. Avšak na rozdiel od lokálnych premenných, ktoré sa vytvárajú a ničia pri každom volaní funkcie, statické premenné pretrvávajú aj po volaní funkcie, pričom zachovávajú svoje údaje medzi volaniami funkcie. Premenné deklarované ako statické sa vytvoria a inicializujú iba pri prvom volaní funkcie.
Príklad kódu :
#define randomWalkLowRange -20
#define randomWalkHighRange 20
int stepsize;
int thisTime;
void setup() {
Serial.begin(9600);
}
void loop() {
// otestovať funkciu randomWalk
stepsize = 5;
thisTime = randomWalk(stepsize);
Serial.println(thisTime);
delay(10);
}
int randomWalk(int moveSize) {
static int place; // premenná na uloženie hodnoty pri náhodnom prejdení - deklarovaná ako statická, aby sa uložila
// hodnoty medzi volaniami funkcií, ale žiadne iné funkcie nemôžu zmeniť ich hodnotu
place = place + (random(-moveSize, moveSize + 1));
if (place < randomWalkLowRange) { // skontrolujte dolnú a hornú hranicu
place = randomWalkLowRange + (randomWalkLowRange - place); // odrážať číslo späť ako kladné
}
else if (place > randomWalkHighRange) {
place = randomWalkHighRange - (place - randomWalkHighRange); // odrážať číslo späť ako záporne
}
return place;
}
Pridaj komentár