static

Description :

Le static mot-clé est utilisé pour créer des variables qui ne sont visibles que pour une seule fonction. Cependant, contrairement aux variables locales qui sont créées et détruites chaque fois qu’une fonction est appelée, les variables statiques persistent au-delà de l’appel de fonction, préservant leurs données entre les appels de fonction.

Les variables déclarées comme statiques ne seront créées et initialisées qu’au premier appel d’une fonction.

Exemple de code :

#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 pour stocker la valeur dans la marche aléatoire - déclarée statique afin qu'elle stocke
  // la valeurs entre les appels de fonction, mais aucune autre fonction ne peut changer sa valeur
  
  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;
}

 


 

Source : https://www.arduino.cc/reference/en/language/variables/variable-scope-qualifiers/static/

 

Laisser un commentaire