Назад к вопросам
Junior
71
questionbank

Что такое статические переменные?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Статические переменные в программировании имеют следующие характеристики:

  • Время жизни: Существуют на протяжении всей работы программы.
  • Область видимости: Зависит от места их определения (могут быть локальными в функции или глобальными в рамках файла/класса).
  • Инициализация: Инициализируются один раз при запуске программы (или при первом доступе, зависит от языка) и сохраняют свое значение между вызовами функций или методами класса.
  • Память: Обычно хранятся в сегменте данных статически выделяемой памяти.

Примеры использования:

  • Подсчет количества вызовов функции.
  • Хранение общего для всех экземпляров класса состояния (в случае статических членов класса).
  • Реализация паттерна Singleton.

Пример на C++:

#include <iostream>

void counter() {
    static int count = 0; // Статическая локальная переменная
    count++;
    std::cout << "Function called " << count << " times" << std::endl;
}

int main() {
    counter(); // Output: Function called 1 times
    counter(); // Output: Function called 2 times
    counter(); // Output: Function called 3 times
    return 0;
}

Пример статического члена класса на Python:

class MyClass:
    class_variable = 0  # Статическая переменная класса

    def __init__(self):
        MyClass.class_variable += 1

    def display_count(self):
        print(f"Current count: {MyClass.class_variable}")

obj1 = MyClass()
obj2 = MyClass()

obj1.display_count() # Output: Current count: 2
obj2.display_count() # Output: Current count: 2