Static

Материал из MK90.ORG wiki
Перейти к: навигация, поиск

Справка Язык | Библиотеки | Сравнение | Изменения

Static

Описание

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

Пример



/* RandomWalk
 * Paul Badger 2007
 * Программа "блуждает" - изменяет значение переменной place между
 * в заданных границах, с произвольным приращением. Максимальный шаг определяется 
 * параметром "stepsize". 
 * Такой прием иногда называют "розовый шум" или "пьяная прогулка".
 */

#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;     // переменная, которая хранит значение случайного перемещения - объявлена static
                         // поскольку должна сохранять свое значение между вызовами функции,
                         // но при этом "не видна" за ее пределами

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

  if (place < randomWalkLowRange){                    // проверить диапазон
    place = place + (randomWalkLowRange - place);     // сделать шаг в положительном направлении
  }
  else if(place > randomWalkHighRange){
    place = place - (place - randomWalkHighRange);     // сделать шаг в отрицательном направлении
  }

  return place;
}

Руководство по Wiring


Исправления, пожелания и новые статьи должны быть опубликованы через Форум.

Оригинальные тексты руководств и переводы распространяются Arduino и MK90 на условиях лицензии Creative Commons Attribution-ShareAlike 3.0 License. Примеры исходных кодов и ссылки являются общественным достоянием.