初学c语言感觉c好难,有段简单的程序看不太懂,请高人指点.

来源:百度知道 编辑:UC知道 时间:2024/07/07 03:57:29
typedef long time_t;是什么意思?time_t是干吗用的,小妹我查了半天仍不明白...
下面这个函数就更看不懂了
void timeadd(struct date* ad,time_t t)
{
struct tm temp;
struct tm* tp;
time_t t1;

temp.tm_mday=ad->da_day; /* Day of month (1--31) */
temp.tm_mon=ad->da_mon-1; /* Month (0--11) */
temp.tm_year=ad->da_year-1900; /* Year (日历年减去1900) ???????????????????????????????????????*/
temp.tm_wday=0; /* Weekday (0--6; Sunday = 0) */
temp.tm_yday=0; /* Day of year (0--365) */
temp.tm_isdst=0; /*不实行夏令时*/

t1=mktime(&temp);
t1+=t;
tp=localtime(&t1);
ad->da_year=tp->tm_year+1900;
ad->da_mon= tp->tm_mon+1;
ad->da_day=tp->tm_mday;

}
能否用简单的程序代替它,为什么-1900后又+1900?
请高人指点!
mktime,localtime好象也是系统定义的函数,什么意思啊?
time_t t等于long t这个我知道
time_t timediff(struct date* d1,struct date* d2)
{
st

typedef long time_t;的意思是新定义一种类型 time_t , 它其实就是long 也可以说是 long 的一个别名,通过typedef 关键字来定义的。

至于下面的函数,要明白还得知道tm,date两个数据结构及mktime,localtime两个函数的内容。

-1900 后又+1900 可能是因为 tm 和 date两个数据结构中关于年的表示不同
如 1986
在 tm 中年是相对1900 来说的,表示为 86
而 date 中年是完整表示 ,即: 1986

typedef 使用最多的地方是创建易于记忆的类型名,例如:
typedef int size;
此声明定义了一个 int 的同义字,名字为 size
那么当使用 size x;就等同于 int x;

指定用time_t代表 long
这样子:time_t t就等价于long t
time_t只是一个名称

12时制