Функції. Статичні змінні

Ми вже вивчили з вами глобальні та локальні змінні. Також, ми вже вивчили області видимості змінних.

Ми знаємо, що можна змінну створювати в якості аргументу функції або в середині функції. При цьому, зауважимо, що змінні, які створюються в середині функції будуть створюватися кожного разу при виклику даної функції і відповідно, будуть знищуватися при її завершенні. Це можна побачити в наступному коді:

        
            #include <iostream>

            void fun()
            {
                int a = 5;

                for (int i = 0; i < 3; i++)
                {
                    std::cout << a++ << " ";
                }
            }

            int main()
            {
                for (int i = 0; i < 3; i++)
                {
                    fun();
                    std::cout << "\n\n";
                }
            }
        
    

Як бачите, програма буде виводити одні й ті ж самі значення.

А, уявіть, що ви створюєте калькулятор і вам потрібно використовувати результат знову і знову. Що ж тоді робити?

Можна його повертати, а потім знову передавати назад у функцію. Це цілком робоче та мудре рішення. Але, в цьому випадку програма буде витрачати час на копіювання значень. Сучасні комп’ютери цього не відчують, тому й проблем це викликати не повинно.

Можна створити глобальну змінну, яка буде зберігати в собі даний результат. Далеко не найкраще рішення, адже можна випадково цей результат змінити. Та і як жартують досвідченні програмісти «найкращий префікс глобальної змінної це

Є ще один варіант. Це використання статичної змінної.


Статична змінна

Статична змінна це змінна, яка створюється в середині функції, але при цьому, вона завершує своє існування лише в кінці програми. Цей тип змінної є чимось середнім між локальною та глобальною змінною. Вона не доступна за межами функції як і локальна змінна, але при цьому зберігає своє значення до кінця програми як глобальна змінна.

Для того, щоб створити статичну змінну потрібно вказати ключове слово а далі тип та

        
            static тип_змінної ім’я_змінної;
        
    

Давайте використаємо код з початку уроку але при цьому створимо не локальну, а статичну змінну та поглянемо на результат.

        
            #include  <iostream>

            void fun()
            {
                static int a = 5;

                for (int i = 0; i < 3; i++)
                {
                    std::cout << a++ << " ";
                }
            }

            int main()
            {
                for (int i = 0; i < 3; i++)
                {
                    fun();
                    std::cout << "\n\n";
                }
            }
        
    

Важливо розуміти, що статична змінна створюється лише при першому виклику функції. І, при наступному виклику функції вона використовуватиме останнє значення, яке мала при попередньому виклику!




Ви повинні увійти, щоб залишати коментарі.


Коментарі: