time_t和struct tm转换问题

问一个比较基础的代码问题,我写了以下代码

 #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就起作用,不是很明白为什么,难道入参有问题吗?希望各位大侠帮忙解惑

localtime返回值是一个全局指针,你不用把返回值付给p

p你只是指向了一块初始化的内存,里面是空的啊 当然是0了

你应该用二级指针去接收localtime的地址

参考:https://www.cnblogs.com/Wiseman/archive/2005/10/24/260576.html

把malloc去掉试下,localtime不需要分配内存的
应该是指针乱了

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;
}