difftime C语言,C语言中difftime函数如何使用time_t*

本文探讨了在C语言中使用difftime函数计算时间差时遇到的问题。原始代码由于指针错误导致程序崩溃,经过调试发现time函数不接受NULL指针。修复后的代码通过创建time_t变量并传递其地址给time函数成功避免了异常,正确计算了程序执行时间。
摘要由CSDN通过智能技术生成

计算时间差,标准C提供了difftime函数,它的原型:double difftime( time_t timer1,time_t timer0);下面的这段代码编译没问题

#include

int _tmain(int argc, _TCHAR* argv[])

{

time_t*   start, *finish;

start=NULL;

finish=NULL;

long loop;

double   result, elapsed_time;

printf( "Multiplying 2 floating point numbers 500 million times...\n" );

time( start );

start=&temp1;

for( loop = 0; loop < 500000000; loop++ )

result = 3.63 * 5.27;

time( finish);

elapsed_time = difftime( *finish, *start );

printf( "\nProgram takes %lf seconds.\n", elapsed_time );

return 0;

}

运行却有异常,linux直接core dump。通过调试跟踪,发现在使用了指针start和finish都是null;

time函数的形参是time_t *timer,但是在这里却不能是指针,为了使程序运行,我们可以使用下面的代码

#include

int _tmain(int argc, _TCHAR* argv[])

{

time_t*   start, *finish;

time_t temp1;

time_t temp2;

start=NULL;

finish=NULL;

long loop;

double   result, elapsed_time;

printf( "Multiplying 2 floating point numbers 500 million times...\n" );

time( &temp1 );

start=&temp1;

for( loop = 0; loop < 500000000; loop++ )

result = 3.63 * 5.27;

time( &temp1+sizeof(time_t) );

finish=&temp1+sizeof(time_t);

elapsed_time = difftime( *finish, *start );

printf( "\nProgram takes %6.0f seconds.\n", elapsed_time );

return 0;

}

也可以在用temp2来替代&temp1+sizeof(time_t)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值