static

[Változók hatóköre & Minősítők]

Leírás

A static kulcsszó olyan változók létrehozására szolgál, amelyek csak egy függvény számára láthatók. Azonban a lokális változókkal ellentétben, amelyek minden függvényhíváskor létrejönnek és megsemmisülnek, a statikus változók a függvényhíváson túl is megmaradnak, megőrizve adataikat a függvényhívások között.

A statikusként deklarált változók csak a függvény első meghívásakor jönnek létre és inicializálódnak.

Példa

/* RandomWalk
  Paul Badger 2007
  A RandomWalk véletlenszerűen vándorol két végpont
  között. A maximális mozgást a ciklusban a "stepsize"
  (lépésköz) paraméter szabályozza.
  Egy statikus változót véletlenszerűen fel-le mozgat.
  Ez a technika "rózsaszín zaj" és "részeg séta" néven is ismert. 
*/

#define randomWalkLowRange -20
#define randomWalkHighRange 20
int stepsize;

int thisTime;

void setup() {
  Serial.begin(9600);
}

void loop() {
  // a randomWalk funkció tesztje
  stepsize = 5;
  thisTime = randomWalk(stepsize);
  Serial.println(thisTime);
  delay(10);
}

int randomWalk(int moveSize) {
  static int place; // változó az érték tárolására a véletlenszerű séta során - statikusnak nyilvánítva, 
  // így tárolva az értékét a függvényhívások között, de más függvények nem változtathatják meg 

  place = place + (random(-moveSize, moveSize + 1));

  if (place < randomWalkLowRange) {                               // az alsó- és felső határ ellenőrzése
    place = randomWalkLowRange + (randomWalkLowRange - place);    // pozitív irányba tükrözi vissza a számot
  }
  else if (place > randomWalkHighRange) {
    place = randomWalkHighRange - (place - randomWalkHighRange);  // negatív irányba tükrözi vissza a számot
  }

  return place;
}

Lásd még