以面试官的角度看strcpy函数
来源:互联网 发布:unity3d 关卡编辑器 编辑:程序博客网 时间:2024/06/14 01:03
一:笔试或者面试的总结 之 一
(1)在笔试或者面试中经常会被问道,strcpy memmove memcpy 函数的实现;有时也会问你STL 中string的 split 和 trim的实现;有的把函数声明部分给你,让你实现它;有的直接给你一个函数名称,自己看着写去吧。
二:下面以面试官的角度一一解读
(2)微软自带的strcpy函数: (不完善,4分)
char * strcpy(char * dest,const char *src) { char *tmp = dest; while ((*dest++ = *src++) != '\0') return tmp; }
(3)最完善的strcpy函数: (推荐使用,10分)
char * strcpy( char *dest, const char *src ) //将源字符串加const,表明其为输入参数不能修改 { if(dest == src) //考虑到源字符串和目的字符串有重叠,也即地址相同 { return dest; } assert( (dest != NULL) && (src != NULL) ); //对源地址和目的地址加非空地址断言 char *tmp = dest; //备份目的字符串的首地址,由于后面的操作会修改dest值 while( (*dest++ = * src++) != '\0' ); return tmp; //为了实现链式操作,将目的地址返回,获得函数返回值; }
推荐的原因:(看得分点)
//得2分 void strcpy( char *dest, char *src ) { while( (*dest++ = * src++) != '\0' ); } //得4分 void strcpy( char *dest, const char *src ) { //将源字符串加const,表明其为输入参数,加2分 while( (*dest++ = * src++) != '\0' ); } //得7分 void strcpy(char *dest, const char *src) { //对源地址和目的地址加非0断言,加3分 assert( (dest != NULL) && (src != NULL) ); while( (*dest++ = * src++) != '\0' ); } //得9分 //为了实现链式操作,将目的地址返回,加2分! char * strcpy( char *dest, const char *src ) { assert( (dest != NULL) && (src != NULL) ); char *tmp = dest; while( (*dest++ = * src++) != '\0' ); return tmp; } //得10分,基本上所有的情况,都考虑到了 //如果有考虑到源目所指区域有重叠的情况,加1分! char * strcpy( char *dest, const char *src ) { if(dest == src) { return dest; } assert( (dest != NULL) && (src != NULL) ); char *tmp = dest; while( (*dest++ = * src++) != '\0' ); return tmp; }
(4)assert的使用
(听师兄们说)assert 在前几年的笔试和面试中,还是会被经常问道的,可是最近几年不显示的问了,总是暗含在某一到题目当中。例如上面的题型,搜狗面过,百度面过……
assert"断言"的理解及使用:
a. 断言,也即做出一些假设,假设该表达式是正确的,若程序运行正确,该断言程序成立;若断言的表达式不成立,程序运行一定会出错,整个程序就会退出。多用于
Debug调试,且能快速定位错误位置;assert(表达式);如果表达式的值为假,整个程序将退出,并输出一条错误信息。如果表达式的值为真则继续执行后面的语句。
b. assert是宏,而不是函数,使用这个宏需要添加头文件 #include <assert.h> 或 c++中添加#include<cassert>
c. assert 与 if的区别:
if : 条件成立继续执行、条件不成立也继续执行。
assert:条件成立继续执行、 条件不成立停止执行 。
d 请看图片:
1 0
- 以面试官的角度看strcpy函数
- 面试官角度看招聘注意事项
- strcpy函数的实现【面试攻略】
- 我以玩游戏的角度去看学习
- mybatis入门--以新人的角度看问题
- 从面试官的角度谈面试
- 实现strcpy的功能【不可以使用strcyp函数】
- 面试:strcpy的实现
- 以程序设计语言角度看windows批处理
- 以销售角度看Android学习
- strcpy函数常见面试题目
- strcpy函数常见面试题目
- strcpy函数常见面试题目
- 面试之站在面试官的角度去面试
- sin函数(以度为单位的角度参数)
- 淘宝面试-Strcpy与memcpy两函数的经典实现
- 面试实现!vs 并附上strcpy() 函数的源码
- (转)关于strcpy函数的问题(程序员面试宝典P219)
- Codeforces Round #276 (Div. 2)(C贪心,D)
- C/C++实现正负数四舍五入
- Web负载均衡
- C库函数手册
- 的规范化个风格他发
- 以面试官的角度看strcpy函数
- PHP读取csv文件的内容
- Day2 C++的办事方式——第一篇
- py2exe使用方法
- 伪终端设备ttySx/ttyx/ptyMN/ttyMN/ptmx/(pts/x)
- 祭!礼!即将逝去的青春
- 网卡
- Web系统的缓存机制的建立和优化
- java基础for each