Step 4 (S-11069)
Step on Stepik: https://stepik.org/lesson/560/step/4
<img width="50%" src="https://ucarecdn.com/da70068a-0ecc-436f-803b-fb765e99228b/">
[00:00 - 00:19] ключевое слово статик можно использовать и для локальных переменных то есть переменных объявленных внутри функции если внутри в некоторой функции определить локальную переменную чем то он кстати кто такая перемена будет вести себя как глобальная переменная которая доступна только внутри этой фонд
[00:19 - 00:35] то есть в отличие от обычных локальных переменных токах статическая локальная переменная будет жить намного дольше она будет жить от 1 выполнения этой функции до конца программы а во 2 она будет храниться не настройки как обычно локально
[00:35 - 00:51] а будет храниться в той области в которой хранятся другие глобальные перемены в хорошем это глобальной переменной просто которая доступна только внутри этой функции важно отметить как происходит инициализация такой статической локальной переменной
[00:51 - 01:06] в отличие от глобальных переменных которые происходят при запуске программ статический локальной переменной инициализируется при 1 вызове функции ну точнее при 1 выполнения интегрирующего год
[01:06 - 01:23] давайте рассмотрим следующий пример будет носить функционал и внутри нее определяется статическая переменная типа int которое интерпретируется параметрам функции если мы
[01:23 - 01:39] вызовем подряд временных 110 потом next от 20 то не туда то произойдет только самый 1 раз дать потому что получится
[01:39 - 01:54] когда мы 1 раз вызываем не передаются 10 и переменных и интегрируются числом 10 если теперь ну и как свернет
[01:54 - 02:13] инкремента вернется 10 если теперь мы на следующий раз вызовем эту же функцию но уже со значением 20 то есть в качестве старта будет поставлено 20 то это не на что не повлияет потому что непосредственно инициализация
[02:13 - 02:31] перемены к будет выплачена только 1 раз только при 1 вызове функционал этом это число 20 ни на что вообще не повлияет и следующее значение которое нет это же число 11 это очень важно то есть в принципе здесь
[02:31 - 02:49] а происходит зависимости от аргументов функции вместо этого могла стать какая нибудь вызов какой другой функции например можно было вместо старт написать здесь к равняется уже так вот эта функция же будет вызвано единожды
[02:49 - 03:04] только в тот раз когда функциональность будет инициализировать переменную при 1 вызове функции важно отметить что несмотря на то что мы довольно сильно
[03:04 - 03:20] локализовали область видимости этой переменной проблема все равно ставит проблему стабильность остаются были меня также есть если ваш подсистемами в себе
[03:20 - 03:37] функции внутри которых определены статические локальные переменные токи статически такая непременно надо изолировать например том случае если вы делаете программ многопоточный по хорошим это просто глобальные переменные которые нет все те же проблемы
[03:37 - 03:57] но вот только с вентиляции здесь попроще интересоваться явно выделено она происходит в тот момент когда вы забираете эту фразу побочные эффекты также имеется собственно пример этом сайте есть пример побочного эффекта данная функция будет каждый раз выдавать
[03:57 - 04:11] разные значит сначала выдаст то значение с которым она будет именно в 1 раз а дальше будет каждый раз его инкрементировать на единицу и выдавать значение следующего часа то есть вот хороший пример функции с побочным эффектом