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. 有关LocalAlloc,LocalReAlloc,LocalFree,GlobalAlloc,GlobalReAlloc,GlobalFree的模糊点总结
  2. Overlay 网络 — VxLAN 虚拟可扩展局域网协议
  3. Request.UrlReferrer详解
  4. 有程序在记录你的键盘输入_12个用Java编写基础小程序amp;经典案例(收藏)
  5. 部署Dotnet Core应用到Kubernetes(一)
  6. 网络驱动器映射成功但无法更新文件_我的电脑访问NAS像打开本地硬盘那样打开网络NAS...
  7. JavaScript之局部变量和局部函数
  8. 设定MyEclipse编辑代码区域文字的大小及非关键字的字体、字形和颜色
  9. 模糊图像退化与去模糊的数学模型
  10. 我的世界php motd,我的世界motd标语编辑器
  11. 2009年考研数学一解析pdf
  12. 禁用word公式编辑器
  13. 实现用python给微信指定联系人在指定时间发送消息(仅供学习)
  14. macbook air 安装win7双系统
  15. [开源][130522]DIY简易红外遥控信号发射器
  16. vue删除数据,不刷新页面
  17. C# 正则计算中文,数字,英文字数统计方法
  18. php表格制作底纹怎么做,HTML表格标记教程(36):表头的背景色属性BGCOLOR
  19. 杨白劳 or 黄世仁
  20. Windows上有哪些推荐的笔记软件?

热门文章

  1. python绘制曲线图-python怎么画曲线图
  2. 精通python爬虫框架-精通Python爬虫框架Scrapy.pdf
  3. python学习路线-2020年 Python学习路线及学习目标规划 拿走不谢!
  4. python叫什么-Python为什么叫爬虫?Python与爬虫有什么关系?
  5. python系统-python系统介绍
  6. python stm32-STM32 上面跑Python
  7. python 模拟浏览器下载文件-Python 模拟浏览器 获取SVN 文件
  8. python面试常见问题-Python面试中最常见的25个问题
  9. python上下条形图-Python之多变量叠加条形图
  10. python3.6安装-Linux安装python3.6