关于strcpy函数的疑问
pzp 2006-11-09 05:29:13 这是网上面试题原型
char * strcpy(char * strDest,const char * strSrc)
{
if ((strDest==NULL)||(strSrc==NULL)) //[1]
throw "Invalid argument(s)"; //[2]
char * strDestCopy=strDest; //[3]
while ((*strDest++=*strSrc++)!='\0'); //[4]
return strDestCopy;
}
这个是strcat.c中的原型
char * __cdecl strcpy(char * dst, const char * src)
{
char * cp = dst;
while( *cp++ = *src++ )
; /* Copy src over dst */
return( dst );
}
我对上面的代码存在一个疑问,即while( *cp++ = *src++ )这个循环什么时候能跳出来,另外这种循环while( *cp++ = *src++ )为什么不会出现内存引用异常,括号内的做法是:*cp=*src,src++,cp++;对cp和src的使用不用判断内存越界吗?