免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
0
11 [报告]
发表于 2007-08-05 15:05 |只看该作者
原帖由 cviolet 于 2007-8-5 14:55 发表


事实上你那句话就是调侃,如果不是,那当然就是算我错了。


事实上是你道行不够。他那句话确实不是调侃。可以返回何不返回。

论坛徽章:
0
12 [报告]
发表于 2007-08-05 15:12 |只看该作者
事实上是你道行不够。他那句话确实不是调侃。可以返回何不返回。

我尚未入道,岂敢谓行?
"可以返回何不返回?"  版主,人家问的问题意思是“为何要返回指针,目的何在?”
哎,就是调侃!包括题目本身亦属调侃!

[ 本帖最后由 cviolet 于 2007-8-5 15:15 编辑 ]

论坛徽章:
0
13 [报告]
发表于 2007-08-05 15:21 |只看该作者
原帖由 cviolet 于 2007-8-5 15:12 发表

我尚未入道,岂敢谓行?
"可以返回何不返回?"  版主,人家问的问题意思是“为何要返回指针,目的何在?”
哎,就是调侃!包括题目本身亦属调侃!


尚未入道,又怎么明白呢。你认为调侃就调侃吧。

论坛徽章:
0
14 [报告]
发表于 2007-08-05 15:26 |只看该作者
尚未入道,又怎么明白呢。你认为调侃就调侃吧。


看来还是潜水看贴好些

论坛徽章:
0
15 [报告]
发表于 2007-08-05 18:30 |只看该作者
FUNCTION的设计一般都是取输入参数,计算后返回结果.
有时候,结果也在参数中(也是输入),虽然可以不返回.

然而不返回有些浪费了FUNCTION的能力,还引起使用他们的函数效率低下.
比如

  1. char buf[128];
  2. char *func1()
  3. {
  4.     return strcpy(buf, "123");
  5. }
  6. char *func2()
  7. {
  8.     strcpy(buf, "123");
  9.     return buf;
  10. }
复制代码


func2 效率低于func1.

所以返回是应该的.
既然要返回,那么一定返回dest, 因为dest是结果. 不可能返回src.

论坛徽章:
0
16 [报告]
发表于 2007-08-05 19:12 |只看该作者

论坛徽章:
0
17 [报告]
发表于 2007-08-05 19:43 |只看该作者
原帖由 思一克 于 2007-8-5 18:30 发表
func2 效率低于func1.

所以返回是应该的.
既然要返回,那么一定返回dest, 因为dest是结果. 不可能返回src.

何以见得 fun2 效率低于 fun1 呢?

[ 本帖最后由 antigloss 于 2007-8-5 19:44 编辑 ]

论坛徽章:
0
18 [报告]
发表于 2007-08-05 20:12 |只看该作者
gcc test.c -S -c -o 1111

然后你看文件1111可以看到2个FUNCTION的汇编. 如果func2 比func1大就见得了.


原帖由 antigloss 于 2007-8-5 19:43 发表

何以见得 fun2 效率低于 fun1 呢?

论坛徽章:
0
19 [报告]
发表于 2007-08-05 20:30 |只看该作者
也不见得一定要返回首指针。字符串有两个属性,首指针和长度。所以,我在写字符串处理函数时,喜欢返回长度。可以想象一下,连续strcpy和strcat,效率会差很多。

论坛徽章:
0
20 [报告]
发表于 2007-08-05 20:35 |只看该作者
原帖由 思一克 于 2007-8-5 18:30 发表
FUNCTION的设计一般都是取输入参数,计算后返回结果.
有时候,结果也在参数中(也是输入),虽然可以不返回.

然而不返回有些浪费了FUNCTION的能力,还引起使用他们的函数效率低下.
比如

char buf[128];
char ...

这个感觉还是蛮对的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP