- •Структура — это группа связанных переменных.
- •struct inv_type
- •Чтобы с помощью этой структуры
- •struct inv_type
- •Если для программы достаточно только
- •Общий формат объявления
- •Доступ к членам структуры
- •Следовательно, чтобы вывести значение
- •с помощью этого кода можно
- •Массивы структур
- •Разрабатываемая программа должна обеспечить выполнение следующих действий:
- •int main()
- •// Инициализация массива структур.
- •// Получение команды меню, выбранной пользователем.
- •char *strchr(const char *str, int ch);
- •// Ввод элементов в инвентарную ведомость.
- •// Ввод информации.
- •// Модификация существующего элемента. void update()
- •// Отображение на экране инвентарной ведомости. void display()
- •Передача структур функциям
- •Присваивание структур
- •Эта программа генерирует следующие
- •struct stype1
- •Использование указателей на
- •Чтобы найти адрес структурной
- •struct bal {
- •К членам структуры можно получить
- •Указатель на структуру можно
- •Первый тип time_t, предназначен для
- •Структура tm имеет следующий формат.
- •Основным средством определения
- •Чтобы преобразовать календарное
- •// Эта программа отображает текущее системное время.
- •Вот один из возможных результатов
- •Ссылки на структуры
- •// Функция, которая получает и возвращает ссылку на
struct bal {
float balance;
char name[80];
} person;
bal *p; // Объявляем указатель на структуру.
Тогда при выполнении инструкции
р = &person;
в указатель р будет помещен адрес
структурной переменной person.
К членам структуры можно получить
доступ с помощью указателя на эту структуру. Но в этом случае используется не оператор "точка", а оператор "->".
p->balance
Оператор "->" называется оператором "стрелка". Он образуется с использованием знаков "минус" и
"больше".
Оператор "стрелка" (->) позволяет
Указатель на структуру можно
использовать в качестве параметра функции.
Важно помнить о таком способе передачи параметров, поскольку он работает гораздо быстрее, чем в случае, когда функции "собственной персоной" передается объемная структура.
Первый тип time_t, предназначен для
представления системного времени и даты в виде длинного целочисленного значения, которое используется в качестве календарного времени.
Второй тип представляет собой структуру tm, которая содержит отдельные элементы даты и времени. Такое представление времени называют
поэлементным.
Структура tm имеет следующий формат.
struct tm {
int tm_sec; /* секунды, 0-59 */
int tm_min; /* минуты, 0-59 */
int tm_hour; /* часы, 0-23 */
int tm_mday; /* день месяца, 1-31 */
int tm_mon; /* месяц, начиная с января, 0-11
*/
int tm_year; /* год после 1900 */
int tm_wday; /* день, начиная с воскресенья, 0-6 */
int tm_yday; /* день, начиная с 1-го января,
0-365 */
int tm_isdst /* индикатор летнего времени */
}
Основным средством определения
времени и даты в C++ является функция time(), которая имеет такой прототип:
time_t time(time_t *curtime);
Чтобы преобразовать календарное
время в поэлементное, используйте функцию localtime(), которая имеет такой прототип:
struct tm *localtime(const time_t *curtime);
// Эта программа отображает текущее системное время.
#include <iostream>
#include <ctime> using namespace std; int main()
{
struct tm *ptr;
time_t lt;
lt = time('\0');
ptr = localtime(<);
cout << ptr->tm_hour << ':' << ptr->tm_min;
cout << ':' << ptr->tm_sec;
return 0;
}
Вот один из возможных результатов
выполнения этой программы:
14:52:30
Ссылки на структуры
Для доступа к структуре можно использовать ссылку. Ссылка на структуру часто используется в качестве параметра функции или значения, возвращаемого функцией. При получении доступа к членам структуры с помощью ссылки используйте оператор "точка".
// Демонстрируем использование ссылки на структуру. #include <iostream>
using namespace std; struct mystruct
{
int a; int b;
};
mystruct &f(mystruct &var); int main()
{
mystruct x, y;
x.a = 10; x.b = 20;
cout << "Исходные значения полей x.a and x.b: ";
cout << x.a << ' ' << x.b << '\n';
y = f (x);
cout << "Модифицированные значения полей x.a и x.b: ";
cout << x.a << ' ' << x.b << '\n';
cout << "Модифицированные значения полей y.a и y.b: ";
cout << y.a << ' ' << y.b << '\n';
return 0;
}