Зачем использовать 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

Главный смысл - что глобальная переменная торчит, как тополь на Плющихе :), и доступна всем и каждому, что не есть хорошо. Например, ее может чисто случайно (непреднамеренно) изменить другая функция.

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

→ Ссылка