#include <assert.h>
#include <iostream>
using namespace std;
char * strcpy(char * strDest,const char *strSrc)
{
assert((strDest!=NULL) && (strSrc !=NULL));//1
char * strDestCopy=strDest;//2
while ((*strDest++=*strSrc++)!='\0');//3 \\将strsrc的\0复制给strdest然后判断 然后指针再往后移
return strDestCopy;//4
}
void main()
{
char a[20],c[]="i am teacher!";
strcpy(a,c);
cout<<a<<endl;
}
strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?
答:为了实现链式表达式。
例如 int length = strlen( strcpy( strDest, “hello world”) );
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
就是方便一些,否则就要这样写:
char strDest[12];
strcpy( strDest, “hello world”);
int length = strlen(strDest);
--------------------------------------------------------------------------------------------------------------------------------
其实,说白了,就是如果上面的字符串拷贝函数strcopy的返回值是void,那么,上面那句:
int length = strlen( strcpy( strDest, “hello world”) );
就要像上面那位的回答,写成好几句了:
char strDest[12];
strcpy( strDest, “hello world”);
int length = strlen(strDest);
而这种直接返回char *的手段,就是为了后来函数调用者方便而设计的.不用你这么麻烦用上述方法去使用了,而直接可以使用拷贝后的dest字符串了.这种方便的实现方法,看起来就是链子链在一起的,所以称为 链式表达式
如此而已.呵呵.