Программирование на C

Статика в программировании на C

Статика в программировании на C
В этом руководстве мы объясним ключевое слово static, применив его к переменным и функциям. Статический - это ключевое слово, используемое в программировании на C, и его можно применять, используя следующий синтаксис:

статический тип данных имя переменной

Статические локальные переменные

Когда переменная в функции статична, переменная сохраняет свое значение между вызовами функции.

// Пример1.c
#включать
int fun1 ()

int count = 0;
count ++;
счетчик возврата;

int fun2 ()

статическое число int = 0;
count ++;
счетчик возврата;

int main ()

printf ("возврат 1-го вызова fun1:% d \ n", fun1 ());
printf ("2-й вызов fun1 возвращает:% d \ n \ n", fun1 ());
printf ("возврат 1-го вызова fun2:% d \ n", fun2 ());
printf ("2-й вызов fun2 возвращает:% d \ n", fun2 ());
возврат 0;


В примере 1.c, у нас есть две функции: fun1 () а также fun2 (). В fun1 (), объявляем одну переменную (count) и инициализируем ее значением 0. Затем мы увеличиваем счетную переменную и возвращаем полученное значение. С использованием основной(), мы называем fun1 () дважды, и каждый раз возвращается значение 1, потому что переменная count очищается при вызове fun1 () завершено. В fun2 () мы объявили переменную count как статическую переменную. Таким образом, его ценность сохраняется. С использованием основной(), мы называем fun2 () дважды: в первый раз возвращается значение 1, а во второй раз возвращается значение 2.

Статические глобальные переменные

Статическая глобальная переменная ведет себя так же, как и другие глобальные переменные, но к ней нельзя получить доступ из другой программы на C.

Статические функции

В C функции по умолчанию являются глобальными. Однако, если мы объявляем статическую функцию, тогда функция будет локальной и к ней нельзя будет получить доступ из другой программы на C.

Инициализация статических переменных

Если статическая переменная не инициализирована явно, то она инициализируется как 0.

// Пример2.c
#включать
int main ()

статический int i;
printf ("Значение i:% d \ n", i);
возврат 0;


В Example2.c, мы объявили статическую переменную i, которая не инициализирована. Однако, поскольку переменная статична, она автоматически инициализируется значением 0.

Важно отметить, что статическая переменная должна быть инициализирована константным литералом; мы не можем использовать возвращаемое значение функции для инициализации статической переменной.

// Example3.c
#включать
int fun1 ()

возврат 5;

int main ()

статический int i = fun1 ();
printf ("Значение i:% d \ n", i);
возврат 0;


В Example3.c, мы пытаемся инициализировать статическую переменную, используя возвращаемое значение fun1 (). Однако, как видите, при компиляции кода возвращается ошибка.

Резюме

Время жизни статической переменной и время жизни программы равны.

Если статическая переменная не инициализирована, она примет значение по умолчанию 0.

Ни глобальная статическая переменная, ни статическая функция недоступны из программы, отличной от той, в которой она была определена.

Учебник Battle for Wesnoth
Битва за Веснот - одна из самых популярных стратегических игр с открытым исходным кодом, в которую вы можете играть сейчас. Эта игра не только очень д...
0 А.D. Руководство
Из множества существующих стратегических игр 0 A.D. удается выделиться как всеобъемлющее название и очень глубокая тактическая игра, несмотря на то, ч...
Учебное пособие по Unity3D
Введение в Unity 3D Unity 3D - мощный движок для разработки игр. Это кроссплатформенный, то есть он позволяет создавать игры для мобильных устройств, ...