1 char* strcpy(char* strDest,const char* strSrc) 2 { 3   if((strDest == NULL) || (strSrc == NULL)) //[1] 4    throw "Invalid Arguments"; //[2] 5  6   //assert((strDest!=NULL) && (strSrc !=NULL)); 7    char* strDestCopy = strDest; //[3] 8    while((*strDest++ = *strSrc++) != '\0')//[4] 9      ;10    return strDestCopy;11 }

[1]
(A)不检查指针的有效性,说明设计者不注重程序的健壮性
(B)检查指针的有效性时使用((!strDest) || (!strSrc))或(!(strDest && strSrc)),说明对C语言中
类型隐式转换没有深刻认识,在本例中char*转换为bool即是类型隐式转换,这种功能虽然灵活,但
是更多的是导致出错概率的增大和维护成本的增高
(C) 检查指针的有效性时使用((strDest==0)||(strSrc==0))说明答题者不知道使用常量的好处。直接使用字面常量(如本例中的0)会减少程序的可维护性。0虽然简单,但程序中可能出现很多处对指针的检查,万一出现笔误,编译器不能发现,生成的程序内含逻辑错误,很难排除。而使用NULL 代替0,如果出现拼写错误,编译器就会检查出来。
[2]
(A)return new string("Invalid arguments");,说明答题者根本不知道返回值得用途,并且它对内存泄露也没有警惕心,从函数体中返回函数体内分配的内存是十分危险的做法,他把释放内存的义务抛给不知情的调用者,绝大多数情况下,调用者不会释放内存,这导致内存泄露
(B)return 0;,说明答题者没有掌握异常机制。调用者有可能忘记检查返回值,调用者还可能无法检查返回值(见后面的链式表达式)。妄想让返回值肩负返回正确值和异常值的双重功能,其结果往往是两种功能都失效。应该以抛出异常来代替返回值,这样可以减轻调用者的负担、使错误不会被忽略、增强程序的可维护性。
[3]
(A)忘记保存原始的strDest值,说明答题者逻辑思维不严密。
[4]
(A)循环写成while (*strDest++=*strSrc++);,同[1](B)。
(B)循环写成while (*strSrc!='\0') *strDest++=*strSrc++;,说明答题者对边界条件的检查不力。循环体结束后,strDest字符串的末尾没有正确地加上'\0'。
2.返回strDest的原始值使函数能够支持链式表达式,增加了函数的“附加值”。同样功能的函数,如果能合理地提高的可用性,自然就更加理想。链式表达式的形式如:
int iLength=strlen(strcpy(strA,strB));
又如:
char * strA=strcpy(new char[10],strB);
返回strSrc的原始值是错误的。其一,源字符串肯定是已知的,返回它没有意义。其二,不能支持形如第二例的表达式。其三,为了保护源字符串,形参用const限定strSrc所指的内容,把const char *作为char *返回,类型不符,编译报错。

原始出处:

http://hi.baidu.com/wenjiashe521/blog/item/7063d488a68eec08b21bba1e.html

转载于:https://www.cnblogs.com/guoyuqiangf8/archive/2012/01/14/2322191.html

strcpy与面试官相关推荐

  1. 程序员面试,面试官更注重代码量、项目经验还是操作系统、数据结构这种基础课程?...

    作者 张小方 如需转载,请联系原作者授权. 我去年12月份从上一家公司离职,一直到今年3月份,基本上都在面试中度过来的. 先交代下背景:坐标上海,做技术开发,我本人求职的职位是linux服务器开发,最 ...

  2. 代码量?项目经验?面试官你到底要看程序员哪一点

    张小方|高性能服务器开发 我去年 12 月份从上一家公司离职,一直到今年 3 月份,基本上都在面试中度过来的. 先交代下背景:坐标上海,做技术开发,我本人求职的职位是linux服务器开发,最倾向的职位 ...

  3. 程序员面试,面试官更注重代码量、项目经验还是操作系统、数据结构这种基础课程?

    作者 张小方 我去年12月份从上一家公司离职,一直到今年3月份,基本上都在面试中度过来的. 先交代下背景:坐标上海,做技术开发,我本人求职的职位是linux服务器开发,最倾向的职位是服务器开发主程或技 ...

  4. 嵌入式邻域面试官必问的问题

    简介:本文汇总了嵌入式行业在校招或者社招中,笔试和面试常问或常考的题目,很多都是基础知识,但需要你对问题有个深刻的认识和理解.话不多说,请看汇总: 本文参考:小米嵌入式研发工程师校招面试总结 1.C语 ...

  5. ❤️手撕这十道HiveSQL题还不能吊打面试官,却能保你不被吊打❤️【推荐收藏】

    全网最详细的大数据Hive文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 前言 HiveSQL十题 第一题 1.需求 2.数据准备 3. ...

  6. 从面试官角度观察到的程序员工资瓶颈,同时给出突破瓶颈的建议

    原文链接: https://gitbook.cn/books/5d98575e0f43867cba9d84a0/index.html 我在做技术面试官的时候,大多数面试的是初级开发和高级开发,偶尔也会 ...

  7. java录排名怎么写_面试官:Java排名靠前的工具类你都用过哪些?

    你知道的越多,不知道的就越多,业余的像一棵小草! 你来,我们一起精进!你不来,我和你的竞争对手一起精进! 编辑:业余草 推荐:https://www.xttblog.com/?p=5158 在Java ...

  8. mysql longtext可以存储多少文字_MySQL 四万字精华总结 + 面试100 问,和面试官扯皮绰绰有余(收藏系列)

    作者:派大新 链接:https://juejin.im/post/5f0d4fadf265da22f3250eaa 写在之前:不建议那种上来就是各种面试题罗列,然后背书式的去记忆,对技术的提升帮助很小 ...

  9. 前端面试官,我为什么讨厌你。

    近两年来,参加过的前端面试不下二十场了,吐槽一下.我所经历的,都是小公司,大公司的同学请无视. 招聘信息能否不要装逼?写一大堆你项目根本用不上的,来给谁看?我曾遇到上面写了一堆对js如何要求,对mv* ...

最新文章

  1. 推荐 Python 十大经典练手项目,让你的 Python 技能点全亮!
  2. 一张思维导图搞定你的Python所有基础
  3. 利用flask将opencv实时视频流输出到浏览器
  4. 【VC基础】 5、对象相关性(Object Dependencies)
  5. Spring.NET学习笔记(4)-对象作用域和类型转换
  6. ASP.NET MVC 实现跨域请求的两种形式
  7. c语言中主函数创建链表,主函数怎么调用函数(数据结构,创建链表)
  8. 《双人成行》如何炼就“教科书级别的合作体验游戏”典范?
  9. Skeljs – 用于构建响应式网站的前端开发框架
  10. python+freetype+opencv 图片中文(汉字)显示 详细图文教程和项目完整源代码
  11. 大数据分析的环节有哪些
  12. mysqld --initialize --console 没有 打印信息_JavaScript学习笔记(三)-- 循环结构
  13. 计算机启动黑屏时间很长,win10开机后黑屏时间很长且进不了安全模式怎么解决?...
  14. 我的Go+语言初体验——Demo游戏体验篇(直男程序员的真实体验)
  15. mac运行.py提示缺少模块的解决方法
  16. IIS SSL客户端证书(忽略/接受/必须)之三——思考验证(3)
  17. 小程序分销商城能帮助商家解决哪些问题?
  18. 详解Java中的main方法
  19. asd 商品历史价格查询
  20. 基于Android校园跳蚤市场交易系统的设计与实现

热门文章

  1. python装饰器函数-python 装饰器 函数被装饰+函数执行
  2. python导入txt为dataframe-python批量读取txt文件为DataFrame的方法
  3. python财务-财务方面的学生如何学习python?
  4. python面试常见问题-10个Python面试常问的问题
  5. python保留字-9.Python关键字(保留字)一览表
  6. 零基础是学java还是python-零基础学编程java和python哪个好
  7. python零基础怎么学-零基础如何自学成为Python高手?
  8. python简介怎么写-python爬虫简历怎么写
  9. python在中国的发展-python在中国的现状和发展趋势
  10. python三维图形渲染-基于 pygtk + vtk 实现三维数据可视化(一)