Double Srednee ( int n )
{
static int Sum = 0, Count = 0;
++ Count;
Sum += n;
return double ( Sum ) / Count;
}
Локальные static-переменные Sumи Count инициализируются значениями 0 один раз при первом вызове функции Srednee. Затем их значения изменяются, и эти измененные значения после завершения работы функции сохраняются до ее следующего вызова.
Альтернативным решением этой задачи является использование глобальных переменных. Однако использование глобальных переменных чревато нежелательными побочными эффектами, связанными с возможными скрытыми изменениями их значений в других функциях программы.
Внешние static-переменные определяются вне функций. Они, так же как и локальные static-переменные имеют глобальное время жизни. Но их область видимости ограничена файлом проекта, в котором они определены (они могут быть доступны только в функциях, расположенных в этом же файле и не видны из других файлов проекта). Таким образом, их можно рассматривать как глобальные переменные с областью видимости, ограниченной файлом, в котором они определены.
Спецификатор static можно применять и к функциям.
Многофайловые проекты
Напишу позже!!!
Структуры, объединения, перечисления
Все данные, с которыми работает программа можно разделить на две группы:
· простые;
· структурированные.
Из рассмотренных ранее типов данных к структурированным типам относятся массивы, остальные типы данных – простые – не имеющие внутренней структуры.
Структуры и объединения относятся к структурированным (конгломератным) типам данных, определяемых программистом.
Структуры
Определение структур
Структуры представляют собой группы связанных между собой, как правило, разнотипных переменных, объединенных в единый объект.
Для работы с некоторой структурой в программе необходимо:
1. описать тип данных этой структуры;
2. определить переменные этого типа для хранения соответствующих данных в памяти.
Рассмотрим пример: сведения о студенте содержат следующие данные:
· фамилия - Fam;
· имя - Name;
· год рождения - Year;
· пол - Sex;
· средний балл - Grade.
Представим все эти данные в виде единой структуры. Введем новый тип данных (назовем его t_Student) для описания этой структуры:
struct t_Student {
char Fam [20],
Name [16];
Short Year;
Bool Sex;
Float Grade;
};
Описание структуры начинается ключевым словом struct. Каждая входящая в структуру переменная называется членом (полем, элементом) структуры и описывается типом данных и именем. Поля структуры могут быть любого типа данных. Их количество не лимитировано.
Вся эта конструкция является инструкцией языка программирования, поэтому после нее всегда должен ставиться символ ;.
При описании структуры память для размещения данных не выделяется. Работать с описанной структурой можно только после того, как будет определена переменная (переменные) этого типа данных, только при этом компилятор выделит необходимую память:
t_Student St1, St2; //Определены две переменные типа t_Student
Определение переменных можно осуществить одновременно с описанием типа данных структуры:
struct t_Student {
char Fam [20],
Name [16];
Short Year;
Bool Sex;
Float Grade;
} St1, St2;
Все поля структурных переменных располагаются в непрерывной области памяти одно за другим. Общий объем памяти, занимаемый структурой, равен сумме размеров всех полей структуры. Для определения размера структуры следует использовать инструкцию sizeof (): sizeof (t_Student) или sizeof (St2).
Дата добавления: 2019-02-07; просмотров: 299;