免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-08-05 13:41 |显示全部楼层 |倒序浏览
我答:可以不返回, 函数就这么设计的.

brit-1.JPG (15.43 KB, 下载次数: 180)

brit-1.JPG

论坛徽章:
0
2 [报告]
发表于 2007-08-05 13:48 |显示全部楼层
是啊,返回指针可以嵌套使用
只是觉得这个问题
有点......
所以就这么答了.
汗一下自己

[ 本帖最后由 M.I.X 于 2007-8-5 13:49 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2007-08-06 09:11 |显示全部楼层
就这个面试题而言,是不是说返回dest指针是最好的方案或较优的方案呢?

1、能嵌套使用的确比较方便,速度也去快一点,但应该不明显,而从可维护性说,大量使用嵌套不是上好做法,经常还特意拆开增加可阅读性. (好不好,这个理由不充分)
2、strcpy本身就是不安全的,这类函数设计时本身就是假设调用者能确保其安全性,也许是考虑一些效率等其他因素。但如果返回0和-1或其它表示成功失败,是不是比返回dest好呢?因为在调用strcpy或strncpy是不知道成功与否的。讲究效率,也许只是个哲学问题。
3、还没想到

论坛徽章:
0
4 [报告]
发表于 2007-08-06 09:14 |显示全部楼层
原帖由 smltiger 于 2007-8-6 09:11 发表
为什么返回指针?
     例子:
            strcpy(a,strcpy(b,c));你想想,如果返回的不是指针,那代码该有多丑。


不觉得分开写有多丑陋,
反而觉得很好阅读了。
你会不会觉得strcpy( a, strcpy (b, strcpy(c,d))); 更帅了 ?

论坛徽章:
0
5 [报告]
发表于 2007-08-06 12:23 |显示全部楼层
原帖由 flw 于 2007-8-6 12:01 发表

越说我越糊涂了,
难道这是一个很常用的技巧吗?


这个技巧也许不被用,但有时会被动的使用,
例如strcpy(dest, src) ;
char * src是其他类库函数返回的指针,当然这应该做临界判断,
但不做的话,就有可能覆盖后面空间了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP