转 strcpy完整版与strcpy为什么有返回值 webservice返回值转义

原文地址:
http://blog.163.com/xiangzaihui@126/blog/static/166955749201182695220753/

一个标准的strcpy函数:

原本以为自己对strcpy还算比较了解,结果面试时还是悲剧了。

下面给出网上strcpy的得分版本:

2分

voidstrcpy(char*strDest,char*strSrc)
{
 while((*strDest++=*strSrc++)!='’);
}


  4分

voidstrcpy(char*strDest,constchar*strSrc)
//将源字符串加const,表明其为输入参数,加2分
{
 while((*strDest++=*strSrc++)!='’);
}


  7分

voidstrcpy(char*strDest,constchar*strSrc)
{
 //对源地址和目的地址加非0断言,加3分
【转】strcpy完整版与strcpy为什么有返回值 webservice返回值转义
 assert((strDest!=NULL)&&(strSrc!=NULL));
 while((*strDest++=*strSrc++)!='’);
}


  10分

//为了实现链式操作,将目的地址返回,加3分!

char*strcpy(char*strDest,constchar*strSrc)
{
 assert((strDest!=NULL)&&(strSrc!=NULL));
 char*address=strDest;
 while((*strDest++=*strSrc++)!='’);
  returnaddress;
}

关键是:

为了实现链式操作,将目的地址返回

这句是个神马回事,我的面试题就是:

strcpy函数返回值有神马作用?

结果彻底悲剧了,尼玛确实不知道。

先来看看微软的代码:

char*__cdeclstrcpy(char*dst,constchar*src)
{
char*cp=dst;
while(*cp++=*src++)
;
return(dst);
}
发现微软的代码很简单,bug一堆是吧?但是return(dst);到底有神马作用?

考虑:

intlength=strlen(strcpy(str,“HelloWorld”));
你就能发现奥秘了。为了实现链式操作,将目的地址返回原来说的就是这么一会事:

Strcpy函数可以作为另外一个函数的实参。

  

爱华网本文地址 » http://www.aihuau.com/a/25101010/28369.html

更多阅读

转载 敬请再转:2014高考作文完整版

原文地址:敬请再转:2014高考作文完整版作者:中国教师梁恕俭2014高考作文·广东卷黑白胶片的时代,照片很少,只记录下人生的几个瞬间,在家人一次次的翻看中,它能唤起许多永不褪色的记忆。但照片渐渐泛黄,日益模糊。数码科技的时代,照片很多,记

声明:《转 strcpy完整版与strcpy为什么有返回值 webservice返回值转义》为网友男奇葩分享!如侵犯到您的合法权益请联系我们删除