Автор Василий Тёркин задал вопрос в разделе Другие языки и технологии
В каких случаях в Си надо использовать переменные static, а не глобальные переменные? и получил лучший ответ
Ответ от Bairam[мастер]
Если переменная объявлена как static,то компилятор выделяет ей как и глобальной переменной постоянное место в памяти. Значение этой переменной сохраняется между вызовами блоков программы, в которых она объявлена (нестатические локальные переменные между вызовами ф-ций уничтожаются) .
Отличие от глобальной в том, что она доступна только в своём блоке кода (ф-ции или файле) .
Прменяется, например, при вызовах COLLBACK ф-ций, которые вызываются при поступлении в приложение сообщений. При этом значения переменных объявленных static,сохраняются. Все другие переменные необходимо заново инициализировать.
Если объявить переменную-член класса как статическую, то компилятор создаст для всех объектов один щбщий экземпляр этой пере менной. Эта переменная не будет копироваться для всх объектов данного класса, как это происходит для нестатических членов.
//Пример:
#include <iostream>
using namespace std;
void fCount();
int main()
{
fCount();
fCount();
fCount();
}
void fCount()
{
static int x=0;
x++;
cout << "You call the funtion " << x << " time!
";
}
Результат работы программы:
You call the funtion 1 time!
You call the funtion 2 time!
You call the funtion 3 time!
это почти тоже самое что и обычная переменная обьявлённая в блоке / функцие.
ещё можно исп-ть unsigned
в том что статические переменные уничтожаются после выполнения блокафункций, глобальные висят в оперативе до тех пор пока прога не завершится....
Чем указатели лучше переменных?
Указатели - тоже тип переменных. Но идея понятна. Не лучше, не хуже. Хороши на своем месте.
подробнее...
что такое typedef struct в си? и для чего он нужен? какие у него функции и что будет без него?
>что такое typedef struct в си?
Объявление типа "структура".
>и для чего он
подробнее...
Как правильно использовать bool в си, си++? Если можно, пример с комментариями.
В Си типа bool нет!
В С++ есть 🙂
Используют так.. .
bool flag = true;
подробнее...
что означает знак процента "%" в си++ ?
Смотря где стоит. . если в printf, то отвечает за форматирование.
При остальных операциях -
подробнее...
Оператор return в СИ
Оператор return возвращает то, что ты укажешь ему.
Оперируют в большинстве только со
подробнее...
C++, как определить что переменная равна -1.#INF0 или 1.#INF0 т.е. бесконечности?
кидай сюда код
эмм лол кстати ток вспомнил что #ляляля это макросс в си так что попробуй
подробнее...
от чего зависит индуктивное и ёмкостное сопротивление переменного тока?
Емкостное сопротивление в цепи переменного тока
При включении конденсатора в цепь постоянного
подробнее...
Что за ключевые слова extern и static в С++?
Вообще-то они еще в Си были.
extern - переменная где-то объявлена, но не в этой единице
подробнее...
Динамическое выделение памяти, при сравнении строк. (Си без использования встр. функций)
> char *pass;
> scanf("%s", &pass);
Это не будет работать!
В переменной pass
подробнее...
Подскажите, что означают здесь cout, cin, float?...+Язык Си
cin запрашивает данные с клавиатуры и помешает их в переменную после >>;
cout отображает
подробнее...
что известно о "книге перемен",кто её придумал?
И-ЦЗИН, - другое название Чжоу и, или КАНОН ПЕРЕМЕН, или в менее точном, но более известном
подробнее...
Что значит "null" в программировании?
Это 0 в виде указателя. Посмотри определение в include, сам увидишь. Какие проблемы.
подробнее...
Почему у китайцев в средние века были длинные волосы,которые они заплетали в косу?
а теперь посмотрите у кого ума больше) ) нверное у вас, вы здали хороший вопрос а ответить на него
подробнее...