最近在写程序的时候,经常被结构体搞得晕头转向,尤其是关于结构体作为函数参数的情况,在此总结。
以asctime函数为例,函数原型为:
char *asctime(const struct tm *tm);
分析可知,参数类型为输入型参数,返回一个字符串类型的数据。
查阅man手册,了解struct tm的一些相关定义
操作asctime时先要定义结构体变量tmNow:
struct tm tmNow;
将结构体变量tmNow的首地址作为实参传入tm指针变量中,得到结果直接打印即可:
printf("[%s]\n", asctime(&tmNow));
再来分析一个gmtime_r函数
函数原型为:struct tm *gmtime_r(const time_t *timep, struct tm *result);
分析可知,gmtime_r接受数据类型time_t的参数,该参数表示日历时间,它表示从Epoch (1970-01-01 00:00:00 +0000 (UTC)开始经过的秒数。并将结果保存到struct tm结构体中,将结构体变量tmNow的首地址作为实参传入result指针变量中最后打印年月日。
gmtime_r(&t, &tmNow);
printf("%d-%d-%d\n", tmNow.tm_year, tmNow.tm_mon, tmNow.tm_mday);