Arduino:Справочник языка Arduino/Область видимости переменных и квалификаторы/static
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
{{#setlogo:ArduinoCommunityLogo.png}}
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Проверка/Оформление/Редактирование: Мякишев Е.А.
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;
}