在我的简单测试代码中,两者都能正常工作,但我想知道在编码风格上是否存在真正的差异,或者是否有任何商定的偏好。
随函附上示例代码:

#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);

now1now2都有相同的值。
作为历史记录,如果在Linux2.4或更早版本的64位内核上运行,这些将不一样。time函数中存在一个错误,仅设置传入参数的低32位(当time_t为64位时)。因此,如果使用返回值,您将得到正确的值,但是如果传入time_t的地址,如果变量未初始化,则会得到垃圾。

10-06 01:39