免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: M.I.X
打印 上一主题 下一主题

[函数] 曾面试时被问:strcpy函数为什么要返回指针? [复制链接]

论坛徽章:
0
111 [报告]
发表于 2008-07-20 00:20 |只看该作者
If the strcpy() function does not return a char pointer, there is no method to use it in a expression.

论坛徽章:
0
112 [报告]
发表于 2008-07-20 09:43 |只看该作者
强烈希望高手们过完招后,整合个准确的答案出来,这样才不失讨论的意义啊。

论坛徽章:
0
113 [报告]
发表于 2008-07-20 10:52 |只看该作者
为了链式操作吧.

论坛徽章:
0
114 [报告]
发表于 2008-07-20 11:23 |只看该作者

回复 #111 jim.feng 的帖子

why

论坛徽章:
0
115 [报告]
发表于 2008-07-20 13:39 |只看该作者
有时候函数原本不需要返回值,但为了增加灵活性如支持链式表达,可以附加返回值。

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

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

strcpy函数将strSrc拷贝至输出参数strDest中,同时函数的返回值又是strDest。这样做并非多此一举,可以获得如下灵活性:

    char str[20];

    int  length = strlen( strcpy(str, “Hello World”) );
是这样吧?“高质量”上这么说的

[ 本帖最后由 lxbkey 于 2008-7-20 13:41 编辑 ]

论坛徽章:
0
116 [报告]
发表于 2008-07-21 09:31 |只看该作者
原帖由 woshiwo 于 2007-8-6 00:08 发表

LZ认为,这是他理想中的返回值……

论坛徽章:
0
117 [报告]
发表于 2008-07-21 09:35 |只看该作者
原帖由 思一克 于 2007-8-5 22:03 发表
copy了string实际是FUNCTION的副作用. (function's side effect).
正作用就是返回dest. 使计算结果可以立即运用于表达式.


答案端倪在此

论坛徽章:
0
118 [报告]
发表于 2008-07-21 14:23 |只看该作者

回复 #15 思一克 的帖子

顶!!

论坛徽章:
0
119 [报告]
发表于 2008-07-21 14:26 |只看该作者
char *a ="hello";
char *b = new char[10];
char *c = NULL;

c = strcpy(b, a);

论坛徽章:
1
2017金鸡报晓
日期:2017-01-10 15:19:56
120 [报告]
发表于 2008-07-21 14:38 |只看该作者
原帖由 flw 于 2007-8-5 14:23 发表
这个问题应该这样回答:
如果不返回指针的话,你就又会问我“为什么 strcpy 函数不返回指针?”,因此它只好返回指针了。

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP