关于此代码段如何使用指针和引用来显示时间的困惑

时间:2018-08-22 08:12:01

标签: c datetime

这是您发现的(非常常见,我将添加)用于在C和C ++中显示当前时间的代码。

time_t tt; 
struct tm * ti; 
time (&tt); 
ti = localtime(&tt);
cout << asctime(ti);

这是我的理解:

  1. time_t是存储时间值的数据类型。 tt是该对象。
  2. struct tm是ctime头文件中的结构。

  3. 我似乎无法将ti包裹住。它似乎是tm的指针对象,但是为什么在这里使用“ struct”关键字呢?不是tm已经存在的结构吗?

  4. 什么时间(&tt)?在tt中存储时间值?

2 个答案:

答案 0 :(得分:0)

  1. 您是(部分)正确的。 tt不是 object ,它是类型为time_t
  2. 变量
  3. struct tm *是一种数据类型:指向struct tm的指针。如果您对此不熟悉,请尝试在纯C中实现堆栈,队列或链表。

  4. RTFM:来自文档(man 2 time

  

time_t time(time_t * tloc);

     

DESCRIPTION
         time()返回以1970年1月1日00:00:00 +0000的纪元为单位的秒数         (世界标准时间)。

     

如果tloc为非NULL,则返回值也存储在tloc指向的内存中。

是的,时间现在存储在titt中。 参见What is the difference between clock_t, time_t and struct tm?

答案 1 :(得分:0)

time_t tt;  // a data type to store the number of seconds since the epoch
struct tm * ti;  // a structure that stores the number of seconds decoded into
                 // integers for year, month, day, hour, etc
time (&tt);      // get the current time and store it in tt
ti = localtime(&tt);  //decode the seconds into separate year/month/day/etc ints
cout << asctime(ti);  // convert the ints into string representation and print it