|

static


Description :

Le mot-clé static permet de créer des variables visibles par une seule fonction. Cependant, contrairement aux variables locales qui sont créées et détruites à chaque appel de fonction, les variables static persistent au-delà de l’appel de fonction, préservant ainsi leurs données entre les appels.

Les variables déclarées static ne seront créées et initialisées qu’au premier appel de fonction.

Exemple de code :

/* RandomWalk
      Paul Badger 2007
      RandomWalk se déplace aléatoirement de haut en bas entre deux extrémités. Le déplacement maximal dans une boucle est déterminé par le            paramètre « stepsize ».
      Une variable statique est déplacée de haut en bas d'une valeur aléatoire.
      Cette technique est également connue sous le nom de « bruit rose » et de « marche ivre ».
    */

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

    int thisTime;

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

    void loop() {
      //  tester la fonction randomWalk
      stepsize = 5;
      thisTime = randomWalk(stepsize);
      Serial.println(thisTime);
      delay(10);
    }

    int randomWalk(int moveSize) {
      static int place; // variable pour stocker la valeur dans une marche aléatoire - déclarée statique pour qu'elle stocke
      // valeurs entre les appels de fonction, mais aucune autre fonction ne peut modifier sa valeur

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

      if (place < randomWalkLowRange) {                               // vérifier les limites inférieures et supérieures
        place = randomWalkLowRange + (randomWalkLowRange - place);    // refléter le nombre dans le sens positif
      }
      else if (place > randomWalkHighRange) {
        place = randomWalkHighRange - (place - randomWalkHighRange);  // refléter le nombre dans le sens négatif
      }

      return place;
    }


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

Publications similaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *