读书人

strcpy为啥要返回一个指针呢

发布时间: 2012-09-14 11:53:44 作者: rapoo

strcpy为什么要返回一个指针呢?
面试被这么问回答不出来好郁闷。。。

说实话我也想不通,如下:

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

有必要返回address么?这么考虑的原因是什么?

[解决办法]

C/C++ code
char *strcpy(char *strDest, const char *strSrc);   {   assert((strDest!=NULL) && (strSrc !=NULL));   char *address = strDest;   while( (*strDest++ = * strSrc++) != ‘\0’ )   NULL ;   return address ;   } 返回指针嘛比如:char* p,*q;strcpy(p,q);好好看看函数里面,把p的指针指向改了,所以,假如:cout<<*p;这会出错,或者不是我们预期的效果:而:p = strcpy(p,q);cout<<*p;这就对了!
[解决办法]
有时候函数原本不需要返回值,但为了增加灵活性如支持链式表达,可以附加返回值。

我在CSDN里找到的,我也学了一点儿东西.你感谢maquanwei(深爱编程)吧.




[解决办法]
对,确实很灵活,unix中的c函数很多也是不用返回的,可大多都有返回值,多是指引。
[解决办法]
为实现链式操作:
strlen(strcpy());
strcat(strcpy());
等等

读书人网 >C语言

热点推荐