С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
8 / 8 / 2
Регистрация: 08.07.2016
Сообщений: 157
1

Указатели на структуры. Программа-пример из книги Шилдта

12.06.2017, 11:17. Показов 2061. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Прошу проверить, правильно ли я поняла значение каждой строчки, т.к. в книге построчного объяснения не дается. Еще хотелось бы спросить на счет десятой строки, почему в функцию time передается знак конца строки?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//эта программа отображает текущее системное время
#include <iostream>
#include <ctime>
using namespace std;
 
int main()
{
    struct tm *ptr; //объявляется структурная переменная-указатель типа tm
    time_t It; //объявляется переменная типа time_t. ( time_t - это тип возвращаемого зачения функции time() )
    It = time('\0'); //возвращает количество секунд, прошедших с 1 января 1970 года
    ptr = localtime(&It); //функция передает структуре значени, полученное с помощью указателя на переменную It
    cout<<ptr -> tm_hour<<':'<<ptr -> tm_min; //обращение к членам структуры через стрелку,т.к. получаем доступ с помощью указателя
    cout<<':'<<ptr -> tm_sec; //обращение к членам структуры через стрелку,т.к. получаем доступ с помощью указателя
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.06.2017, 11:17
Ответы с готовыми решениями:

Почему не работает программа-пример для демонстрации работы функции strcmp (из книги Шилдта)?
Здравствуйте, помогите пожалуйста разобраться, почему программа не выполняется как надо....

Пример из книги Шилдта. Интерфейсные свойства
Добрый вечер всем программистам. Почему при выполнении этого кода в режиме отладки выводятся совсем...

Объясните подробней пример из книги Шилдта
using System; class RangeArray { // Закрытые данные. int а; // ссылка на базовый массив int...

Synchronized. Не работает пример из книги Шилдта «Java. Полное руководство»
Я нашёл ошибку в книге Герберта Шилдта «Java. Полное руководство». Это не задача из книги. Это...

7
308 / 271 / 220
Регистрация: 14.11.2016
Сообщений: 1,049
12.06.2017, 14:03 2
C++
1
2
3
4
5
6
7
 '\0' = NULL
 
time_t time (time_t* timer);
 
The time function returns the number of seconds elapsed since midnight (00:00:00), January 1, 1970, Coordinated Universal Time (UTC), according to the system clock.
The return value is stored in the location given by timer.
This parameter may be NULL, in which case the return value is not stored.
Ещё подробнее описано тут http://www.cplusplus.com/reference/ctime/time/
0
8 / 8 / 2
Регистрация: 08.07.2016
Сообщений: 157
12.06.2017, 14:22  [ТС] 3
anapshy, спасибо Вам большое за ссылку, но я это уже читала и не из одного источника. Если на форуме не очень любят особо одаренных, то умоляю хотя бы объяснить, почему в функцию time передается знак конца строки? разве возвращаемое значение имеет не целочисленный тип?
0
308 / 271 / 220
Регистрация: 14.11.2016
Сообщений: 1,049
12.06.2017, 14:46 4
Лучший ответ Сообщение было отмечено Kamila11 как решение

Решение

Kamila11, Функция time принимает указатель (ссылку) и возвращает тип time_t
C++
1
time_t time (time_t* timer);
Т.е. ты можешь сделать так:
C++
1
2
time_t timer;
time(&timer); // теперь timer инициализированная секундами с 1970г
Или так:
C++
1
time_t timer(time(NULL));
0 = NULL = '\0'
1
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
12.06.2017, 16:39 5
Цитата Сообщение от anapshy Посмотреть сообщение
C++
1
'\0' = NULL
В С++ - это присваивание, а не знак равенства.
1
308 / 271 / 220
Регистрация: 14.11.2016
Сообщений: 1,049
12.06.2017, 16:55 6
nd2, имел ввиду, что '\0' это тоже самое, что NULL или 0
time(0)/time(NULL)/time('\0') - нет разницы
0
nd2
12.06.2017, 17:06
  #7

Не по теме:

Цитата Сообщение от anapshy Посмотреть сообщение
имел ввиду
Это понятно. Но раз уж здесь С++, то и пиши правильно (== , или словами).

0
Вездепух
Эксперт CЭксперт С++
12792 / 6669 / 1795
Регистрация: 18.10.2014
Сообщений: 16,870
12.06.2017, 18:13 8
Цитата Сообщение от Kamila11 Посмотреть сообщение
почему в функцию time передается знак конца строки?
Это - типичная белиберда из книг Шилдта, которые славятся своей "альтернативной одаренностью" и к серьезному прочтению не рекомендуются.

Аргумент функции time - указатель на объект типа time_t или нулевой указатель (null pointer). Формально в "классическом" С++ '\0' является допустимым способом задания null pointer constant, но за такую null pointer constant следует бить по рукам.

Начиная с С++14 '\0' больше не является допустимым способом задания null pointer constant.
1
12.06.2017, 18:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.06.2017, 18:13
Помогаю со студенческими работами здесь

Найти и исправить ошибку в коде с пузырьковой сортировкой (пример из книги Шилдта)
программа сортировки массива пузырьковым методом из книги Шилдта. компилятор на 15, 18, 24, 26, 27,...

Не работает программа из книги Герберта Шилдта.
Подскажите и мне тоже из этой книги не работает программа. #include&lt;iostream&gt; #include&lt;cstdlib&gt;...

Не работает программа из книги Герберта Шилдта.
При вводе кода из вышеупомянутой книги, выдает 3 ошибки: 1) error C2440: '=' : cannot convert...

Программа из книги Шилдта, небольшая загвоздка)
Привет форумчане!) В книге Шилдта при объяснении методов с параметрами есть пример, в котором...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru