首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

(面试题的四种答案)重写strcpy库函数.看不懂解决方案

2012-03-14 
(面试题的四种答案)重写strcpy库函数..看不懂下面是四种写法,四种写法的质量依次增强,能解释下这四种写法

(面试题的四种答案)重写strcpy库函数..看不懂
下面是四种写法,四种写法的质量依次增强,能解释下这四种写法吗???
第一种:
void strcpy( char *strDest, char *strSrc )
{
  while( (*strDest++ = * strSrc++) != ‘\0’ );
}
 

第二种:
void strcpy( char *strDest, const char *strSrc ) 
{
  while( (*strDest++ = * strSrc++) != ‘\0’ );
}
  

第三种:
void strcpy(char *strDest, const char *strSrc) 
{
  assert( (strDest != NULL) && (strSrc != NULL) );
  while( (*strDest++ = * strSrc++) != ‘\0’ );
}
  


第四种:
char * strcpy( char *strDest, const char *strSrc ) 
{
 assert( (strDest != NULL) && (strSrc != NULL) );
 char *address = strDest; 
 while( (*strDest++ = * strSrc++) != ‘\0’ ); 
  return address;
}

这是C C++程序员面试的题目,作者对四种不同的答案进行了评价.......


[解决办法]

C/C++ code
void strcpy( char *strDest, char *strSrc ) //字符串的指针{   while( (*strDest++ = * strSrc++) != ‘\0’ );  //将后者第1个字符赋给前者首地址,然后各自}                                               //自增,将后一个字符赋给前者 直到后者出现                                                       //0(字符串结尾),字符是'\0'   第二种: void strcpy( char *strDest, const char *strSrc ) //算法相同,加了const表示是常量,可以防{                                                //止在函数中修改后者的内容   while( (*strDest++ = * strSrc++) != ‘\0’ ); }    第三种: void strcpy(char *strDest, const char *strSrc) {   assert( (strDest != NULL) && (strSrc != NULL) );  //判断一下,为空就不需要赋值   while( (*strDest++ = * strSrc++) != ‘\0’ ); }    第四种: char * strcpy( char *strDest, const char *strSrc ) {  assert( (strDest != NULL) && (strSrc != NULL) );  char *address = strDest;   // 这个作用不清楚,不过我写函数也习惯在函数里重新定义一个指针接 while( (*strDest++ = * strSrc++) != ‘\0’ );  //受参数  return address; } 

热点排行