Пример использования указателей на структуры



 

В качестве интересного примера использования указателей на структуры можно рассмотреть С++‑функции времени и даты . Эти функции считывают значения текущего системного времени и даты . Для их использования в программу необходимо включить заголовок <ctime> . Этот заголовок поддерживает два типа даты, требуемые упомянутыми функциями. Один из этих типов, time_t , предназначен для представления системного времени и даты в виде длинного целочисленного значения, которое используется в качестве календарного времени . Второй тип представляет собой структуру tm , которая содержит отдельные элементы даты и времени. Такое представление времени называют поэлементным . Структура tm имеет следующий формат.

 

 

Значение tm_isdst положительно, если действует режим летнего времени (Daylight Saving Time), равно нулю, если не действует, и отрицательно, если информация об этом недоступна.

Основным средством определения времени и даты в C++ является функция time() , которая имеет такой прототип:

 

 

Функция time() возвращает текущее календарное время системы. Если в системе отсчет времени не производится, возвращается значение ‑1 . Функцию time() можно вызывать либо с нулевым указателем, либо с указателем на переменную curtime типа time_t . В последнем случае этой переменной будет присвоено значение текущего календарного времени.

Чтобы преобразовать календарное время в поэлементное, используйте функцию localtime() , которая имеет такой прототип:

 

 

Функция localtime() возвращает указатель на поэлементную форму параметра curtime , представленного в виде структуры tm . Значение curtime представляет локальное время. Его обычно получают с помощью функции time() .

Структура, используемая функцией localtime() для хранения времени в поэлементной форме, размещается в памяти статически и перезаписывается при каждом вызове этой функции. Если нужно сохранить содержимое этой структуры, скопируйте его в какую‑нибудь другую область памяти.

Следующая программа демонстрирует использование функций time() и localtime() , отображая на экране текущее системное время.

 

 

Вот один из возможных результатов выполнения этой программы:

 

 

Несмотря на то что ваши программы могут использовать поэлементную форму представления времени и даты (как показано в предыдущем примере), проще всего сгенерировать строку времени и даты с помощью функции asctime() , прототип который выглядит так:

 

 

Функция asctime() возвращает указатель на строку, которая содержит результат преобразования информации, хранимой в адресуемой параметром ptr структуре, и имеет следующую форму.

 

 

Указатель на структуру, передаваемый функции asctime() , часто получают с помощью функции localtime() .

Область памяти, используемая функцией asctime() для хранения форматированной строки результата, представляет собой символьный массив (статически выделяемый в памяти), который перезаписывается при каждом вызове этой функции. Если нужно сохранить содержимое данной строки, скопируйте его в какую‑нибудь другую область памяти.

В следующей программе демонстрируется использование функции asctime() для отображения системного времени и даты.

 

 

Вот один из возможных результатов выполнения этой программы.

 

 

В языке C++ предусмотрены и другие функции даты и времени, с которыми можно познакомиться, обратившись к документации, прилагаемой к вашему компилятору.

 

Ссылки на структуры

 

Для доступа к структуре можно использовать ссылку. Ссылка на структуру часто используется в качестве параметра функции или значения, возвращаемого функцией. При получении доступа к членам структуры с помощью ссылки используйте оператор "точка" . (Оператор "стрелка" зарезервирован для доступа к членам структуры с помощью указателя.)

В следующей программе показано, как можно использовать структуру при передаче функции параметров по ссылке.

 

 

Вот результаты выполнения этой программы.

 

 

Ввиду существенных затрат системных ресурсов на передачу структуры функции (или при возвращении ее функцией) многие С++‑программисты для выполнения таких задач используют ссылки на структуры.

 


Дата добавления: 2018-09-22; просмотров: 272; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!