статический тип данных имя переменной
Статические локальные переменные
Когда переменная в функции статична, переменная сохраняет свое значение между вызовами функции.
// Пример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.
Ни глобальная статическая переменная, ни статическая функция недоступны из программы, отличной от той, в которой она была определена.