Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
46
Добавлен:
16.02.2016
Размер:
72.19 Кб
Скачать

Пользовательские типы данных

Помимо структур и объединений разработчик программного обеспечения на C++ имеет возможность моделирования новых типов данных на базе уже имеющихся в его распоряжении типов. Формирование пользовательских типов осуществляется с использованием ключевого слова typedef, за которым указывается какой-либо из имеющихся типов данных и следующий за ним идентификатор, назначающий новое имя для выбранного типа. Фактически, таким образом определяется синоним типа данных. Например, выражение

typedef unsigned char byte;

определяет новый тип данных byte, суть которого такая же, как и типа unsigned char. Следовательно, в программе возможно определение переменных типа byte, которые в памяти будут занимать один байт и смогут принимать значения от 0 до 255, например:

byte nlnput = OxFF; byte nOutput = 0;

Синтаксис объявления пользовательского типа для массива выглядит следующим образом:

typedef char Names[27];

В этом случае объявление переменной типа Names

Names name;

будет означать, что такая переменная представляет собой строку из 27-ми символов.

Наиболее часто переопределение типов данных используется совместно со структурами. Благодаря этому становится возможным создание новых типов данных, характерных для сложных объектов, объединяющих разнотипные характеристики. Например, создадим тип данных COORD, объекты которого будут нести информацию о трех координатах в пространстве:

typedef struct

{

double х;

double у;

double z;

} COORD;

Теперь можно объявить объект my Point типа COORD: COORD myPoint;

и обращаться к его элементам так, как если бы он был объявлен как соответствующая структура:

myPoint.x = 5.654; myPoint.y » 0; myPoint.z = 3.14;

Функции работы с датой и временем

Функции и типы данных, необходимые для работы с датой и временем, объявлены в заголовочном файле time.h. В частности, этот файл содержит определения типа данных time t:

typedef long time_t; и структуры tm, которая объявлена следующим образом:

struct tm {

int tm_sec; // секунды

int tmjnin; // минуты

int tm_hour; // часы (0-23)

int tmjnday; // дата (1-31)

int tm__mon; // месяц (0-11)

// год (текущий тед минус 1900)

int tm_year;

// день ведели (0-6; Воскр = 0)

int tm_wday;

int tm_yday; // день а году (0-365)

int tm_isdst; // О если Зимнее время

};

Ниже приводится таблица 9.1. обобщающая часть объявленных функций с кратким описанием их работы.

Таблица 9.1.

Функции работы с датой и временем

Наименование

Краткое описание

as с time

преобразует время и дату из формата структуры типа tm в символьную строку

clock

возвращает число "тиков" процессора, прошедших от начала запущенного процесса

с time

преобразует время я дату из формата time_t в символьную строку

difftime

вычисляет интервал между двумя заданными временными параметрами

gmtime

преобразует дату и время из формата time t в формат структуры tm по Гринвичу (GMT)

local time

преобразует дату и время из формата time_t в формат структуры tm

mktime

преобразует дату и время в календарный формат

_strdate

преобразует текущую дату в символьную строку в формате mm/dd/yy

strftime

форматирует время для последующего вывода

_strtime

возвращает текущее системное время в виде символьной строки

time

возвращает время в секундах, прошедшее с полуночи (0 часов 0 минут 0 секунд) 1 января 1970 г, по Гринвичу

tzset

устанавливает значения глобальных переменных daylight, _timezone, и tzname

В качестве обобщающего примера рассмотрим программу работы с датой и временем:

#include <iostream.h>

#include <time.h>

int main ()

{

time_t tt;

tm *рМуТimе;

tt = time(NULL);

pMyTime = localtime(Stt);

cout « " Текущее время: " ;

cout « asctime (pMyTime) ;

return 0;

}

В рассматриваемом примере используется функция time (), имеющая прототип

time_t time(time_t *timer);

возвращающая число секунд, прошедших с 00:00:00 1 января 1970 г. Параметр timer также принимает возвращаемое функцией значение. Для более удобной работы с датой и временем полученные данные преобразуются функцией localtime() к формату структуры tm. Применение функции asctime() позволяет вывести полученную таким образом информацию в виде строки символов.

Соседние файлы в папке ЯзыкС++Глушаков