Зачем использовать static в коде на Си?
Чем код:
#include <stdio.h>
void counter() {
static int count = 0;
printf("%d ", count++);
}
int main()
{
for (int i = 0; i < 10; i++) {
counter();
}
return 0;
}
Отличается от кода:
#include <stdio.h>
int count = 0;
void counter() {
printf("%d ", count++);
}
int main()
{
for (int i = 0; i < 10; i++) {
counter();
}
return 0;
}
И там, и там, переменная создаётся один раз и используется во всём коде. Смысл использовать static?
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Главный смысл - что глобальная переменная торчит, как тополь на Плющихе :), и доступна всем и каждому, что не есть хорошо. Например, ее может чисто случайно (непреднамеренно) изменить другая функция.
А статическая переменная видна только в функции. И никакой ни злоумышленник, ни доброжелатель до нее не доберется...