原文地址:
http://blog.163.com/xiangzaihui@126/blog/static/166955749201182695220753/
一个标准的strcpy函数:
原本以为自己对strcpy还算比较了解,结果面试时还是悲剧了。
下面给出网上strcpy的得分版本:
2分
voidstrcpy(char*strDest,char*strSrc) |
4分
voidstrcpy(char*strDest,constchar*strSrc) |
7分
voidstrcpy(char*strDest,constchar*strSrc) |
10分
//为了实现链式操作,将目的地址返回,加3分! |
关键是:
为了实现链式操作,将目的地址返回
这句是个神马回事,我的面试题就是:
strcpy函数返回值有神马作用?
结果彻底悲剧了,尼玛确实不知道。
先来看看微软的代码:
char*__cdeclstrcpy(char*dst,constchar*src)
{
char*cp=dst;
while(*cp++=*src++)
;
return(dst);
}
发现微软的代码很简单,bug一堆是吧?但是return(dst);到底有神马作用?
考虑:
intlength=strlen(strcpy(str,“HelloWorld”));
你就能发现奥秘了。为了实现链式操作,将目的地址返回原来说的就是这么一会事:
Strcpy函数可以作为另外一个函数的实参。