+ -
当前位置:首页 → 问答吧 → 为什么用指针作为函数的形参比数组要快??

为什么用指针作为函数的形参比数组要快??

时间:2011-12-17

来源:互联网



 为什么用指针作为函数的形参比数组要快??传进的实参是数组。

 最近在POJ上做了一个字符串的题目,题目已AC,但速度却是别人的好几倍。

 其中就是一个子函数的形参问题:请看代码:
 
 这两个函数的功能一样的,

 就是函数的参数不一样,一个是(char strDest[])另一个是(char *strDest)
 
 我的问题是,用数组做为形参,隐含意思不就是指针吗?但速度为什么明显比(char *strDest)参数低呢???

 哦,对了,调用这个函数时,传入的实参是数组。

 哪位精通 C++ 指针数组内存的指点一下下哈~~~


 C/C++ code


void str_con(char strDest[], const char stra[], const char strb[]) // 用这个函数要近 1s 
{
    int ti = 0;
    for(int i = 0; stra[i] != '\0'; i++)
        strDest[ti++] = stra[i];
    for(int i = 0; strb[i] != '\0'; i++)
        strDest[ti++] = strb[i];
    
    strDest[ti++] = '\0';
}

void str_con_ptr(char *strDest, const char *stra, const char *strb) /这个是400ms 用指针作为形参要比数组快一倍
{
    int ti = 0;
    for(int i = 0; stra[i] != '\0'; i++)
        strDest[ti++] = stra[i];
    for(int i = 0; strb[i] != '\0'; i++)
        strDest[ti++] = strb[i];
    
    strDest[ti++] = '\0';
}

作者: gucheng789   发布时间: 2011-12-17

你讲的一点也不靠谱!

因为这两者在被编译器编译之后的代码是一样的,没有差别。

如果你是两个函数先后运行的话,那么请你吧第二个函数放到前面去执行,而第一个函数放到后面去执行,然后你再看看时间差别。

作者: mougaidong   发布时间: 2011-12-17

贴main()代码看看

作者: yisikaipu   发布时间: 2011-12-17