时间(NULL); vs time(&something);

Luk*_*keN 10 c

真正简单的问题.根据我的手册页,这两个人会做同样的事情:

time_t t;
time(&t);

printf("Time: %ld", t);
Run Code Online (Sandbox Code Playgroud)

...

printf("Time: %ld", time(NULL));
Run Code Online (Sandbox Code Playgroud)

那么,将指针传递给时间的好处究竟是什么?如果time()由于没有时钟可能会失败,我认为这两种变体都不会有任何好处.

Cob*_*sve 8

这样做的好处是,您无需在调用"时间"后将数据复制到另一个结构中.

如果您正在准备要发送到另一个应用程序/服务器的数据缓冲区,则必须复制数据,这是额外的开销.通过将指针传递到数据结构中,您可以将其直接放在正确的位置.

当然,如果您对数据的唯一用途是将其转换为另一种格式(如文本printf),那么使用NULL调用它并保存第一个示例所需的额外存储会更有效.

最后,因为时间函数使用单个位置来存储它的内部时间结构,所以第一种方法会更加线程安全,尽管如果'time'实际上是线程安全的,我不记得我的头脑.