В С++, как и во многих других языках программирования, в функциях можно использовать переменные трёх видов: глобальные, локальные и статические. И получается, что они будут храниться в трёх разных местах.
Пример:
Здесь у нас объявлена глобальная переменная GlobalVar. Она видна в любой части программы (в том числе и в других функциях) и существует на протяжении выполнения всей программы.
В функцию передаётся параметр х, а ещё в функции объявлена локальная переменная z. Эти переменные не видны ни из других функций, ни из других участков программы. Эти переменные существуют только во время выполнения функции. При вызове функции для них выделяется память, а после завершения работы функции память освобождается и локальные переменные перестают существовать.
Третий вид переменных - статические. Они объявляются со словом static. Это нечто среднее между глобальными и локальными переменными. Такая переменная является локальной, то есть она не видна в других частях программы и может использоваться только в той функции, в которой объявлена.
Однако после завершения работы функции переменная остаётся существовать. Выделенная под неё память не освобождается. А это значит, что она может сохранять свои значения.
Также обратите внимание, что в функции мы инициализировали статическую переменную. И, тем не менее, счётчик будет считать - при каждом вызове функции он не будет обнуляться, так как инициализация выполняется только один раз.
В итоге наша программа выведет следующее:
Как видите, счётчик считает ))) В нашем случае он считает количество вызовов функции в программе. Но на практике, конечно, эта возможность используется для более полезных вещей. Обычно это применяется для хранения каких-то промежуточных результатов вычислений. Но и в качестве счётчика тоже может быть использовано. Только подсчитывается обычно, не количество вызовов функций, а, например, количество логических единиц на каким-либо входе.
На этом всё. Подписывайтесь на канал, чтобы ничего не пропустить.