免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
0
41 [报告]
发表于 2007-08-05 23:25 |只看该作者
原帖由 flw 于 2007-8-5 23:18 发表

而链式调用本身就是非常有争议的做法,
因此要不要支持链式调用,
也是值得商榷的。
我的主要观点参考楼上。


其实争论点已经很明确。
我个人意见:既然语言特性支持返回值作为表达式一部分,库的设计者就不能不考虑。除非在效率上特别要命的地方,对于设计者来说通用性是第一位的。

论坛徽章:
0
42 [报告]
发表于 2007-08-05 23:29 |只看该作者
返回的内容可以有:
1、指针
2、复制的数量(int)
3、返回0表示正常完成,其他表示各种错误。
题目是不是应该这样理解,为什么返回指针而不是返回其他内容?
而不是这样理解:为什么要返回值而不是不返回值?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
43 [报告]
发表于 2007-08-05 23:31 |只看该作者
原帖由 woshiwo 于 2007-8-5 23:25 发表

其实争论点已经很明确。
我个人意见:既然语言特性支持返回值作为表达式一部分,库的设计者就不能不考虑。除非在效率上特别要命的地方,对于设计者来说通用性是第一位的。

我一直强调,兼收并蓄才是王道,
我们每个人都可以有自己的或者自己支持的观点,
但是我们一定要注意到这个世界上还有不同的观点存在,
而且要考虑到它们的合理性。

简单地来说,
如果要我来设计一套 API,
我也许会重新考虑,
要不要像 strcpy 这样做,
当然考虑的最终结果也许还是和 strcpy 一样,
但是考虑过和不假思索拍屁股(注)决定的还是有很大区别的。


注:还有一种说法是拍脑袋,甚至还有拍大腿的。

论坛徽章:
0
44 [报告]
发表于 2007-08-05 23:54 |只看该作者

回复 #43 flw 的帖子

我已经深刻体会到这个世界上还有不同的观点存在,所以才说是个人意见。
我个人从没用到过strcpy的返回值,但我还是尽量让自己站到设计者的立场上考虑问题,想必这不是他们拍屁股或脑袋的结果。
再次声明,个人观点。

论坛徽章:
0
45 [报告]
发表于 2007-08-06 00:04 |只看该作者
:em11: LZ 的贴里干嘛贴一个图出来?大煞风景。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
46 [报告]
发表于 2007-08-06 00:04 |只看该作者
原帖由 woshiwo 于 2007-8-5 23:54 发表
我已经深刻体会到这个世界上还有不同的观点存在,所以才说是个人意见。
我个人从没用到过strcpy的返回值,但我还是尽量让自己站到设计者的立场上考虑问题,想必这不是他们拍屁股或脑袋的结果。
再次声明,个人 ...

论坛徽章:
0
47 [报告]
发表于 2007-08-06 00:08 |只看该作者
原帖由 mik 于 2007-8-6 00:04 发表
:em11: LZ 的贴里干嘛贴一个图出来?大煞风景。

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

论坛徽章:
0
48 [报告]
发表于 2007-08-06 01:06 |只看该作者
既然有 assignment expressions,那为什么 strcpy() 不能在完成任务的时候带个指针出来?

论坛徽章:
0
49 [报告]
发表于 2007-08-06 09:06 |只看该作者
原帖由 快乐的土豆 于 2007-8-6 08:37 发表
在很大一部分函数返回0表示正常,负数表示异常情况下,strxxx的函数返回了dest反映的不过是原来的接口的设计人员考虑的不充分。

strcpy不会产生错误,就像数组越界访问不会产生错误一样。

ps:我同意flw的看法,返回了就多了一种选择

论坛徽章:
0
50 [报告]
发表于 2007-08-06 09:06 |只看该作者
看了几位高手的帖子,觉得以下几种观点都有一定得到里

1.历史原因
2.给用户这种选择,但是不强迫你用
3.完全是过时(没有必要)的接口
4.无妨(和2有点类似)

但是我个人确实很少见到利用strcpy的代码,虽然不能代表别人,但是我估计大多数人也不会用,一个功能99%的人都不用,不能说明它是没有用的,但至少说明没有它,我们基本不受影响。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP