在我的简单测试代码中,两者都能正常工作,但我想知道在编码风格上是否存在真正的差异,或者是否有任何商定的偏好。
随函附上示例代码:
#include <stdio.h>
#include <time.h>
int main(int argc, char **argv)
{
time_t now1, now2;
time(&now1);
now2 = time(NULL);
printf("now1 = %ld\n", now1);
printf("now2 = %ld\n", now2);
return 0;
}
编辑
我刚看到这个问题可能应该被标记为重复的。
最佳答案
两者没有区别。
如果这样做:
time_t now1, now2;
now2 = time(&now1);
now1
和now2
都有相同的值。作为历史记录,如果在Linux2.4或更早版本的64位内核上运行,这些将不一样。
time
函数中存在一个错误,仅设置传入参数的低32位(当time_t
为64位时)。因此,如果使用返回值,您将得到正确的值,但是如果传入time_t
的地址,如果变量未初始化,则会得到垃圾。