我们从MSDN中找到strcpy函数原型:
char *strcpy( char *strDestination, const char *strSource);
1:不调用库函数,实现strcpy函数
2:解释strcpy代码中的各个参数意义
第一个问题我们就直接看代码吧
char *strcpy( char *strDestination, const char *strSource)
{
assert(strDestination!=NULL&&strSource!=NULL);
char *str=strDestination;
while((*strDestination++=*strDestination++)!='\0');
return str;
}
实现代码是非常简单的,一个字节一个字节的拷贝即可,当碰到0就退出即可。
针对第二个问题我们提出以下几点:
1:为什么使用const?
大家可以看出const修饰的是char类型,我们是拷贝源串,所以要防止在拷贝函数中修改了源字符串
2:空指针检查
源指针和目的指针都有可能会出现空指针的情况,所以应该对其进行检查,如果不检查指针的有效性,说明答题者不注重代码的健壮性。
3:为什么定义一个str指针?
因为目的指针strDestination已经在进行移动了,我们需要返回字符串首地址&#