我在修改指针时发现了这段代码here。我阅读了time()
库函数,返回了time_t
数据类型。我还读过,ISO C将time_t
定义为算术类型,但未指定任何特定类型,范围,分辨率或编码。在给定的代码时间函数中,期望返回一个地址。正确吗?
void getSeconds(unsigned long *par) {
/* get the current number of seconds */
*par = time( NULL );
return;
}
答案 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
的值设置为当前时间戳。
在给定的代码时间函数中,预期函数将返回算术类型的值。