CRT字符串函数代码赏析
来源:互联网 发布:linux bz2压缩命令 编辑:程序博客网 时间:2024/04/29 02:23
最近去了几家公司面试,面试之前各家公司都拿出了一套笔试题出来做。这几家公司的笔试题在C/C++部分都有一个特点是:题目中有大量对字符串相关函数的考查:如一家公司要求写出strcpy函数,一家要求写出itoa函数等。究其原因,我认为通过字符串函数能很好的考查面试者对C++的内存管理机制的理解以及面试者对指针操作的熟悉程度。内存管理和指针操作又是使用C++编写程序的基础,如果C/C++程序员在这两方面没有深刻的认识,其编写出来的程序自然很容易在运行时发生错误。
C++字符串库函数中的某些函数比较简单,比如strcpy函数或者itoa函数等,一个学习C++语言的初学者只要看了数组和指针这两章,应该就能比较顺利的写出这类简单的字符串库函数。但通过看面试者写出来的这些函数的源代码,就能看出面试者还是不是一个C++语言的菜鸟。下面我就以strcpy函数为例,来看一看初学者和老手写的代码的差距。
首先我们来看一个新手常常写出的strcpy函数
该函数虽然能够很好的完成预定的功能,程序也足够的简单。但是这样的程序是肯定不能获得招聘者青睐的。因为程序遍历了pDest两次,这在效率上也确实是太浪费了。我们完全可以通过'/0'结束符来判断是否读到了pDest的结尾。修改后的strcpy函数版本如下所示。
该函数虽然也算比较漂亮,但是我认为使用指针的话更能体现出面试着对C++语言指针部分的理解,所以让我们试着把它改成使用指针的形式。
该函数的版本不够简洁,让我们试着把它改得简单一点。
最后让我们把它改的更加的简单一点,这也是CRT库的源代码。
如果是面试题的话,我更加倾向于大家在函数开始的地方加上断言,因为有些公司就是要通过这个检查了地址是否有效。
最后我还想为大家贴上一个stroustrup使用C++写的itoa函数,我认为该程序不但写的高效简洁,而且程序在错误处理方面想的比较周到,其中对异常的使用方法很值得大家学习。
- CRT字符串函数代码赏析
- 常用CRT字符串函数源码
- 精彩代码赏析 -- 有授权许可的字符串拷贝函数源码
- itoa 函数编写,赏析,simple_itoa,整数转字符串,itoa自定义
- SHLWAPI 和 CRT (C Runtime) 字符串处理函数的区别
- Preconditions JUnit代码赏析
- 开源b3log代码赏析
- 开源b3log代码赏析
- AsyncTask 代码赏析
- 优秀代码赏析:CircleImageView
- 简单代码数据赏析
- lcd probe函数 赏析
- CRT 入口函数 CRTStartup
- 废弃的CRT函数
- CRT函数解读
- MTK优美代码赏析3
- 序列化-b3log代码赏析
- 学生管理系统代码赏析
- POJ2696 A Mysterious Function
- 专心点吧
- ADO数据库操作
- 串口操作
- 在vs2008中用odbc数据源连mysql的方法
- CRT字符串函数代码赏析
- PNG格式到底是什么?
- 请问下面的语法怎么理解?
- 短信操作
- C++中extern “C”含义深层探索
- 4月1日-5日小结 及 4月6日-10日规划
- C++中extern “C”详解
- 短信操作 1
- 使用SNMP4J获取OID的过程