读书人

对《高质量C++编程指南》strcpy 函数的

发布时间: 2012-03-08 13:30:13 作者: rapoo

对《高质量C++编程指南》strcpy 函数的疑问
在林锐博士的《高质量C++编程指南》中有道题目是编写strcpy函数,书上给出答案是

char *strcpy(char *strDest, const char *strSrc);
{
assert((strDest!=NULL) && (strSrc !=NULL));
char *address = strDest;
while( (*strDest++ = * strSrc++) != ‘\0’ ) // #1
return address ;
}

在#1处使用的是++后缀版本,每次循环都会产生2个临时变量,能不能改成以下

char *strcpy(char *strDest, const char *strSrc);
{
assert((strDest!=NULL) && (strSrc !=NULL));
char *address = strDest;
while(*strSrc != '\0 ')
{
*strDest = *strSrc;
++strDest;
++strSrc;
}
*strDest = '\0 ';
return address ;
}

这样就不会有临时变量问题了,不知道我这个做法对不对,请大家多指教~~



[解决办法]
对于C++内建的类型
++i; i++效果都差不多
[解决办法]


如果你懂汇编,你可以看看汇编代码

其实经过编译器优化后没什么区别
[解决办法]
如果你是重载类的这类运算符
效率上差的才会多写。

读书人网 >C++

热点推荐