我已经开始在C语言中学习Linux编程,并且遇到了以下问题:
time_t now;
struct tm *local_time;
now = time(NULL);
local_time = localtime(&now);
该函数localtime
是Linux API的一部分,它接受一个指向time_t
该指针的指针,但是为什么它返回一个指向tm
struct的指针呢?
我的问题是tm
,初始化后如何管理结构?
如果localtime
静态分配了该结构,则不能保证该结构不会随着程序的进行而被覆盖;如果该tm
结构是动态分配的,则程序员free
不再需要调用该结构。
那么返回指针的C函数的正确阶段是什么?
谢谢!
凯文(Kevin)解释了问题所在,并且您的假设是正确的。对于此类功能,您可以应用简单的修复方法:
time_t now;
struct tm local_time;
now = time(NULL);
local_time = *localtime(&now);
返回localtime(&now)
时,静态分配结构的内容将复制到本地结构上local_time
。
编辑:还有很多其他的事情要说:
mktime
和之间共享相同的缓冲区gmtime
,因此也可以使用它们来修改结构。C99和C11提供更安全的功能[TR 24731-1]。
localtime_s(const time_t * restrict timer, struct tm * restrict dst);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句