Статические переменные действительно могут сохранять свое значение, даже если они были удалены из области действия! В результате статические переменные сохраняют свое прежнее значение в настройке, упомянутой выше, и их не нужно инициализировать один раз в новой среде. Статические переменные всегда устанавливаются один раз. Компилятор хранит переменную до завершения кода. Внутри и вне метода могут быть указаны статические переменные. Статические переменные имеют стандартное фиксированное значение 0. Статические переменные остаются активными до завершения кода. Обычные переменные ограничены диапазоном, в котором они указаны, тогда как статические переменные имеют область действия, которая распространяется внутри кода.
Синтаксис
Вот синтаксис объявления статической переменной на языке C.
Статический тип переменной имя-переменной = значение-переменной;
Реплика статической переменной создается после ее указания. Основная причина, по которой нас используют вместо локальной переменной, по-видимому, заключается в том, что значение, выделенное в диапазоне, в котором она может быть найдена, сохраняется. В новом объеме кода разработчик старается не инициализировать параметр снова. Это можно понять во всем коде. Он сообщает компилятору ограничить ширину переменной или метода в коде и остается на месте на протяжении всего кода. Эта функция предотвращает случайный доступ к статическим переменным, инкапсулируя или скрывая их от остальной части кода. Давайте рассмотрим несколько примеров работы со статическими переменными. Поскольку мы работали над языком C, убедитесь, что в вашей системе Linux установлен компилятор «GCC» для компиляции кода C.
Пример 01
Откройте командную оболочку с помощью «Ctrl + Alt + T» и создайте файл типа C с помощью редактора «nano», используя приведенный ниже запрос. Имя файла — «test.c», и он будет напрямую открыт в GNU Nano Editor.
$ nano test.c
Вы можете увидеть приведенный ниже фрагмент кода. Напишите тот же код в свой файл GNU. Код содержит один обязательный заголовок, основную функцию и еще одну функцию с именем «значение». Мы инициализировали переменную целочисленного типа «num» в функции «value», имеющую значение 0. Затем значение «num» будет увеличено и возвращено в основную функцию. В основном методе мы указали три оператора печати для вызова функции «value» и печати результата переменной «num», которая была увеличена. Нажмите клавишу «Ctrl + S», чтобы сохранить код, и закройте файл, нажав «Ctrl + X».
Теперь скомпилируйте код, используя команду «gcc», как показано ниже. Если ошибки не возникает, значит, код правильный.
$ gcc test.c
После компиляции файла test.c мы будем запускать этот файл через запрос «a.out» ниже в консоли. Вы увидите, что результат будет увеличивать значение переменной «num» только один раз, даже после трехкратного вызова функции. Это связано с тем, что значение переменной «num» не было указано как статическое, из-за чего всякий раз, когда вызывается функция «value», она восстанавливает исходное значение, равное 0. Вот почему она увеличивает только 0 до 1 все три типа при вызове.
$ ./a.out
Обновим код. Снова откройте файл языка C test.c, используя запрос «nano».
$ nano test.c
Нам просто нужно указать, что переменная «num» статична. Для этого используйте ключевое слово «static» в начале переменной «num» и перед типом переменной, который в нашем случае является целым числом. Каждый раз, когда основная функция вызывает метод «value», статическая переменная «num» будет увеличиваться, а значение станет статическим. Это означает, что новое обновленное значение будет использоваться в следующем вызове, и так далее, процесс будет повторяться.
Давайте сначала скомпилируем файл C с помощью запроса компиляции «gcc» в консольном терминале.
$ gcc test.c
После выполнения файла с помощью инструкции «a.out» вы можете видеть, что выходные данные показывают увеличенное значение каждый раз при вызове метода «value» из-за использования ключевого слова «static» перед переменной «num».
$ ./a.out
Пример 02
Давайте посмотрим на другой пример статической переменной. Откройте тот же файл C, чтобы написать в нем код.
$ nano test.c
Вы будете использовать показанный ниже код в редакторе GNU. У нас есть библиотека с одним заголовком и основной метод в коде. На этот раз вы будете использовать две переменные целого типа, «x» и «y», соответственно, в основной функции скрипта C. Один из них — автоматический, второй — статический со значениями «-75» и «22». Затем мы использовали две строки печати для вывода значений обеих переменных отдельно на экран терминала. Затем мы должны попрактиковаться в выражении «если» для выполнения условия. В этом состоянии мы проверим, не равно ли значение переменной «x» 0. Если значение не равно 0, тогда будет выполнен другой оператор печати. Этот оператор печати выведет общую сумму обеих переменных «x» и «y» в нем. После этого основная функция будет закрыта.
Давайте скомпилируем обновленный код C снова через запрос «gcc» вместе с именем файла C «test.c», указанным в запросе, как показано ниже.
$ gcc test.c
Давайте начнем запускать файл «test.c» с помощью старой инструкции «a.out», как указано. Вывод на экране вашего терминала покажет вам точное значение обеих переменных в первых двух строках. После этого в третьей строке отобразится сумма обеих переменных.
Заключение
Мы надеемся, что эта статья будет легкой для понимания и поможет вам понять идею статических переменных в языке C через операционную систему Linux.