strcpy

#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字符串了.这种方便的实现方法,看起来就是链子链在一起的,所以称为 链式表达式

如此而已.呵呵.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值