首先看看time 的原型:
time_t time(time_t *calptr); //其说明是:若成功则返回时间值,否则返回-1。时间值总是作为函数值返回。如果参数不为空(NULL),则时间值也存放在由calptr指向的单元内。(看似的确多余的,仅仅是看似~~)
第二个函数的原型:
struct tm *localtime(const time_t *calptr);//看到了把~参数是指针,所以必须要传递地址,&t取地址。 (顺带提一下~localtime是将日历时间转换成本地时间,会考虑到本地时区和夏时制标志,而与此类似的一个函数gmtime则是将日历时间转换成国际标准时间)
这些是 linux 环境下的函数接口,time 用于取 Epoch 记年以来到现在经过的秒数,Epoch 记年从 1970年1月1日开始。
localtime 用于将 前面取得的秒数,转换成你所在时区下的时间描述,譬如是多少年多少月多少日几点几分几秒。
NULL 和 & 等都是C语言的内容,要学Linux嵌入式开发,这是基础,要加油了。碰到什么问题,也可以在 JulianTec 提供的邮件列表中求助!
不用,返回的那个struct tm指针并不是用malloc分配的,而是指向一个静态变量。
2楼正解,顺便说一下,返回的时间是从1900年开始计数的