c函数调用堆栈问题
请问下面code:char*get_millitm(){structtimevaltms;chartstr[100];char*time;timerclear(&tms)...
请问下面code:
char *get_millitm()
{
struct timeval tms;
char tstr[100];
char *time;
timerclear(&tms);
gettimeofday(&tms, NULL);
strftime(tstr, 100, "%X", localtime(&tms.tv_sec));
/* tv_usec是微秒,除以1000转换为毫秒 */
sprintf(time, "%s.%d", tstr, tms.tv_usec/1000);
return time;
}
如果在另一个函数中调用它,例如:
void method(){
printf("%s\n", get_millitm());
}
这样是不是再次调用函数,有可能将time覆盖,所以应该使用下面
void get_millitm(char *time)
{
struct timeval tms;
char tstr[100];
timerclear(&tms);
gettimeofday(&tms, NULL);
strftime(tstr, 100, "%X", localtime(&tms.tv_sec));
/* tv_usec是微秒,除以1000转换为毫秒 */
sprintf(time, "%s.%d", tstr, tms.tv_usec/1000);
}
这样在其它函数中使用time变量就不会有两次调用出现问题的情况了。
可以解释下原因么?谢谢! 展开
char *get_millitm()
{
struct timeval tms;
char tstr[100];
char *time;
timerclear(&tms);
gettimeofday(&tms, NULL);
strftime(tstr, 100, "%X", localtime(&tms.tv_sec));
/* tv_usec是微秒,除以1000转换为毫秒 */
sprintf(time, "%s.%d", tstr, tms.tv_usec/1000);
return time;
}
如果在另一个函数中调用它,例如:
void method(){
printf("%s\n", get_millitm());
}
这样是不是再次调用函数,有可能将time覆盖,所以应该使用下面
void get_millitm(char *time)
{
struct timeval tms;
char tstr[100];
timerclear(&tms);
gettimeofday(&tms, NULL);
strftime(tstr, 100, "%X", localtime(&tms.tv_sec));
/* tv_usec是微秒,除以1000转换为毫秒 */
sprintf(time, "%s.%d", tstr, tms.tv_usec/1000);
}
这样在其它函数中使用time变量就不会有两次调用出现问题的情况了。
可以解释下原因么?谢谢! 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询