有个题目编程实现字符串拷贝函数strcpy(),很多人往往很快就写出下面这个代码。
void strcpy( char *strDest,char *strSrc )
{
while(( *strDest++ = * strSrc++) != '\0' );//逐个赋值字符串数组中的数据,知道字符串结束
}
其实仔细看看这个实现过程并不完美,严格来说非常不严谨,我们可以完善一下。
char * strcpy( char *strDest, const char *strSrc )//将源字符串加const,表明只读是输入参数
{
assert( (strDest != NULL) && (strSrc != NULL) );//对源地址和目的地址加非0断言,判断有效性
char *address = strDest;
while( (*strDest++ = *strSrc++) != 0');//逐个复制
return address;
}
这样程序看起来完善多了,面试官也会很满意的。