Другие языки программирования и технологии
В каких случаях в Си надо использовать переменные static, а не глобальные переменные?
В чем прелесть static перед обычными глобальными переменными?
Если переменная объявлена как 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!\n";
}
Результат работы программы:
You call the funtion 1 time!
You call the funtion 2 time!
You call the funtion 3 time!
Отличие от глобальной в том, что она доступна только в своём блоке кода (ф-ции или файле) .
Прменяется, например, при вызовах 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!\n";
}
Результат работы программы:
You call the funtion 1 time!
You call the funtion 2 time!
You call the funtion 3 time!
это почти тоже самое что и обычная переменная обьявлённая в блоке / функцие.
ещё можно исп-ть unsigned
ещё можно исп-ть unsigned
в том что статические переменные уничтожаются после выполнения блока\функций, глобальные висят в оперативе до тех пор пока прога не завершится....
Похожие вопросы
- [C++] Почему не рекомендуют использовать глобальные переменные?
- Почему нельзя использовать глобальные переменные?
- Чем отличаются статические и глобальные переменные?
- Как задать два разных имени одной переменной в С++ ?(Синонимы имён переменных)
- Напишите пожалуйста функцию обмена значений двух переменных на си (не c++) для любого типа данных
- Подскажите как решить используя динамические переменные ( С++)
- Как использовать значение переменной как ИМЯ переменой или метода,,,? С#
- В чем различие ключевых слов public и static в java? И объясните конкретно , что такое экземпляр класса.
- какую программу лучше использовать для программирования на языке Си?
- С# - нужно сделать так, чтобы консоль читала слова, как переменные, а не просто слова...