问一个比较基础的代码问题,我写了以下代码
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int testTime(time_t* time_tmp,struct tm* convertRes){
convertRes = localtime(time_tmp);
return 1;
}
int main(){
time_t t;
struct tm* p;
p = (struct tm*) malloc(sizeof(struct tm));
t=time(NULL);
//p = localtime(&t);
printf("%d-%02d-%02d ",(p->tm_year), (p->tm_mon),p->tm_mday);
printf("%02d:%02d:%02d\n", p->tm_hour, p->tm_min, p->tm_sec);
t = t+20;
testTime(&t,p);
printf("%d-%02d-%02d ",(p->tm_year), (p->tm_mon),p->tm_mday);
printf("%02d:%02d:%02d\n", p->tm_hour, p->tm_min, p->tm_sec);
return 0;
}
本想在函数testTime中做一下时间类型转换,但是发现一个问题,此段代码输出结果为:
0-00-00 00:00:00
0-00-00 00:00:00
显然不是我想要的结果,函数testTime没有起作用,但是如果 //p = localtime(&t);这行注释去掉,则输出结果为:
117-11-13 16:05:30
117-11-13 16:05:50
这样结果就是对的,函数testTime就起作用,不是很明白为什么,难道入参有问题吗?希望各位大侠帮忙解惑