Arduino:Справочник языка Arduino/Область видимости переменных и квалификаторы/static: различия между версиями
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Myagkij (обсуждение | вклад) м (Замена текста — «<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">» на «<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">») |
Myagkij (обсуждение | вклад) Нет описания правки |
||
Строка 1: | Строка 1: | ||
{{Arduino панель перехода}} | {{Arduino панель перехода}} | ||
{{Myagkij-редактор}} | {{Myagkij-редактор}} | ||
Строка 61: | Строка 60: | ||
<references /> | <references /> | ||
{{Навигационная таблица/Справочник языка Arduino}} | |||
{{Навигационная таблица/Arduino библиотеки}} | |||
[[Категория:Справочник языка Arduino]] | [[Категория:Справочник языка Arduino]] | ||
[[Категория:Область видимости переменных и квалификаторы языка Arduino]] | [[Категория:Область видимости переменных и квалификаторы языка Arduino]] |
Версия от 23:23, 19 июня 2019
Содержание | Знакомство с 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;
}
См.также
Внешние ссылки