C语言关于传指针与传形参的速度问题

来源:百度知道 编辑:UC知道 时间:2024/06/05 08:46:19
如果我定义一个结构
typedef struct LongInt
{
int num[1000];
int len;
}LongInt;
第一个函数用形参
LongInt Add(LongInt a,LongInt b);
{
LongInt c;
....
return c;
}
第二个用指针
void Add(LongInt * a,LongInt *b,LongInt *c)
{
...
(*c)=(*a)+(*b);
}
第二个函数是否比第一个快?速度能快多少?
还有一个小问题
for(i=0;i<=a+b+c+d;i++)
是每次都重新计算a+b+c+d还是不计算而是寄存起来?

第二个函数是否比第一个快?速度能快多少?
当然第2个要快一点,因为直接去地址里面去数据。
第一个函数,要进行赋值,然后才可以用。

for(i=0;i<=a+b+c+d;i++)
是每次都重新计算a+b+c+d还是不计算而是寄存起来?

--------是每次都重新计算a+b+c+d

第一个
差不多...电脑又不是小霸王,完全可以忽略
第二个
重新计算

当然第2个要快一点,因为直接去地址里面去数据。速度快多少,可以分别调用这两种情况,然后用clock()函数计算出相差的ms数。
a+b+c+d的值不一定要重新计算,如果abc在for里面不改变值的话可能在编译时被优化。