Chinaunix首页 | 论坛 | 博客
  • 博客访问: 66301
  • 博文数量: 19
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 165
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-13 16:29
文章分类

全部博文(19)

文章存档

2010年(9)

2009年(10)

我的朋友

分类: C/C++

2010-09-16 17:14:15

char*strcpy(char*strDest,constchar*strSrc);在函数里面已经把值从strsrc拷贝到strdest里面了为什么还要返回strdest的指针呢?(我的面试题目,我没想到好的答案)
答:
当strcpy失败的时候就能从返回值判断出来。
答:当strcpy失败的时候就能从返回值判断出来。





-------------------------------------


strcpy不管成功失败,都是返回指向目标的指针.


这样做,只是多提供了一个利用结果的手段.








printf("s\n",strcpy(dest,src));
答:strcpy执行的是将strSrc拷贝到strDest里面


所以它返回就是strDest



答:方便使用
答:嗯嗯,2楼的纠正是对的。





林锐高质量C编程指南原文:





【建议6-2-1】有时候函数原本不需要返回值,但为了增加灵活性如支持链式表达,


可以附加返回值。


例如字符串拷贝函数strcpy的原型:


char*strcpy(char*strDest,constchar*strSrc);


strcpy函数将strSrc拷贝至输出参数strDest中,同时函数的返回值又是strDest。


这样做并非多此一举,可以获得如下灵活性:


charstr[20];


intlength=strlen(strcpy(str,“HelloWorld”/DownloadFiles\a\2005-03-14\));



答:增加灵活性如支持链式表达





可以把它的返回值直接作为其它函数的参数
答:为了方便嵌套使用.
答:明白了,多谢各位;)
答:学习!
答:"char*strcpy(char*strDest,constchar*strSrc);在函数里面已经把值从strsrc拷贝到strdest里面了为什么还要返回strdest的指针呢?(我的面试题目,我没想到好的答案)"





如果没有返回strDest指针,那么strDest可能出现你想不到的内容


因为char*strDest可以看作是个字符数组,如果你函数体内改变了数组内容,必须要返回上层函数才能得到处理的值,如果不返回那么你只能改变strDest[0]的值,即指针





相近的还有所以在子函数中给调用函数的指针分配的动态内存,必须用return返回该指针
阅读(5143) | 评论(0) | 转发(0) |
0

上一篇:堆和栈的区别

下一篇:大端小端计算机

给主人留下些什么吧!~~