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

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *

Nemôžete kopírovať obsah tejto stránky