返回time()库函数的数据类型

时间:2018-07-19 08:15:53

标签: c++ pointers

我在修改指针时发现了这段代码here。我阅读了time()库函数,返回了time_t数据类型。我还读过,ISO C将time_t定义为算术类型,但未指定任何特定类型,范围,分辨率或编码。在给定的代码时间函数中,期望返回一个地址。正确吗?

 void getSeconds(unsigned long *par) {
   /* get the current number of seconds */
     *par = time( NULL );
      return;
     }

3 个答案:

答案 0 :(得分:3)

不是,时间函数将返回一个time_t值,然后将其转换为unsigned long并存储在您的无符号长指针par指向的地址上。

您很可能会收到编译器警告,因为现在time_t对于大多数编译器(包括MSVC 2017)来说都是64位值,因此会失去精度。

答案 1 :(得分:1)

否,time函数不应返回地址。参数par是一个指针,但是您取消引用它,将从time返回的值放在par指向的位置。

答案 2 :(得分:0)

std::time_t time( std::time_t* arg )返回算术类型的值。

unsigned long *par定义了一个指向算术类型的指针。

par包含地址。

*par指向该值。

*par = time(NULL)将地址par的值设置为当前时间戳。

在给定的代码时间函数中,预期函数将返回算术类型的值。