您的位置:首页 > 其它

字符串复制函数的优化过程

2017-08-13 09:39 148 查看
//版本1

void Mystrcpy1(char *des,char *src)

{

 int i;

 for(i=0;src[i]!='\0';i++)

 {

  des[i]=src[i];

 }

 des[i]='\0';

}
//版本2

void Mystrcpy2(char *des,char *src)

{

 while(*src!='\0')

 {

  *des=*src;

  des++;

  src++;

 }

 *des='\0';

}

//版本3

 /*

 *(arr+i)==arr[i];

 p[i]==*(p+i);

 p==arr;

 */

void Mystrcpy3(char *des,char *src)//此版本由于上述表达式的成立而得来

{

 int i;

 for(i=0;*(src+i)!='\0';i++)

 {

  *(des+i)=*(src+i);

 }

 *(des+i)='\0';

}
//版本4

void Mystrcpy4(char *des,char *src)

{

 while(*des++=*src++);

}
//版本5

void Mystrcpy5(char *des,char *src)

{

 assert(des!=NULL&&src!=NULL);//用断言判断字符串是否为空

 if(des==NULL||src==NULL)

 {

  return;//exit会退出整个程序

 }

 while(*des++=*src++);

}
//版本6

char *Mystrcpy6(char *des,const char *src)//此版本最佳 用const修饰*src是防止源字符串被修改

{

 char *p=des;

 //检查参数

 assert(des!=NULL&&src!=NULL);//用断言判断字符串是否为空

 if(des==NULL||src==NULL)

 {

  return NULL;

 }

 while(*des++=*src++);

 return p;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐