ArduBlock Wiki Уроки Компоненты Книги Программы Контакты
Квалификатор static

Ключевое слово static используется для создания переменной, которая видна только одной функции. Однако в отличие от локальных переменных, которые создаются и уничтожаются при каждом вызове функции, статические переменные остаются после вызова функции, сохраняя свои значения между её вызовами.

Пример

/* RandomWalk
* Paul Badger 2007
* RandomWalk ("Случайное блуждание") программа "перемещается" между двумя точками последовательности
* Максимальное перемещение задается параметром "stepsize".
* Static переменная изменяет свое значение на случайную велечину.
* Такое "блуждание" иногда называют "pink noise" (розовый шум).
*/

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

int thisTime;
int total;

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

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

int randomWalk(int moveSize){
  static int  place;     // переменная сохраняет значение между вызовами функции
                         // другие функции не могут изменять значение этой переменной
  place = place + (random(-moveSize, moveSize + 1));

  if (place < randomWalkLowRange){                    // проверяем выхождение за границы
    place = place + (randomWalkLowRange - place);     // если "выскочили" то делаем разворот
                                                      // этот пример взят с arduino.cc, вообще? если раскрыть скобки,
                                                      // то получим просто place = randomWalkLowRange;
  }
  else if(place > randomWalkHighRange){
    place = place - (place - randomWalkHighRange);     // разворот
  }

  return place;
}

© 2010 - 2019 ArduBlock.ru Все права защищены. Яндекс.Метрика