c - 时间(空);与时间(&something);

标签 c

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

time_t t;
time(&t);

printf("Time: %ld", t);

...

printf("Time: %ld", time(NULL));

那么,传递指向时间的指针到底有什么好处呢?如果 time() 由于没有时钟可用而失败,我认为这两种变体都没有任何好处。

最佳答案

好处是您不必在调用“时间”后将数据复制到另一个结构中。

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

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

最后,由于时间函数使用单个位置来存储其内部时间结构,因此第一种方法将更加线程安全,尽管我不记得“时间”是否实际上是线程安全的。

关于c - 时间(空);与时间(&something);,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2928575/

相关文章:

c - 在 C 中对重复行进行排序

c - 仅使用现有代码执行任意代码

C数组和函数,如何返回?

c - 如何在指针处取值并复制到另一个指针

c - 获取可执行文件中文本部分的开始和结束地址

c - 这段代码如何破坏我的堆栈跟踪?

c - 在两个文件中添加两个数字,然后将其写入另一个文件。数字太大,不适合整数范围

c - memcpy 在 Linux 中移动 128 位

c - 具有较大数组的 memcpy 段错误

c - 如何添加文件大小