以面试官的角度看strcpy函数
一:笔试或者面试的总结 之 一
(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 请看图片:
以面试官的角度看strcpy函数的更多相关文章
- 从面试官的角度,聊聊java面试流程
在这篇回答里,就讲以我常规的面试流程为例,说下java方面大致会问什么问题,以及如何确认候选人达到招聘要求. 先说面试前准备,可能有些面试官是拿到简历直接问,而且是在候选人自我介绍时再草草浏览简历,但 ...
- 面试官:你看过Redis数据结构底层实现吗?
面试中,redis也是很受面试官亲睐的一部分.我向在这里讲的是redis的底层数据结构,而不是你理解的五大数据结构.你有没有想过redis底层是怎样的数据结构呢,他们和我们java中的HashMap. ...
- 一口气说出 OAuth2.0 的四种鉴权方式,面试官会高看一眼
本文收录在个人博客:www.chengxy-nds.top,技术资源共享,一起进步 上周我的自研开源项目开始破土动工了,<开源项目迈出第一步,10 选 1?页面模板成了第一个绊脚石 > , ...
- 8年经验面试官详解 Java 面试秘诀
作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三 ...
- 面试官你好,我已经掌握了MySQL主从配置和读写分离,你看我还有机会吗?
我是风筝,公众号「古时的风筝」,一个简单的程序员鼓励师. 文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在里面. 面试官:我看你简历上写的你们公司数据库是 ...
- 跟面试官讲Binder(零)
面试的时候,面试官问你说,简单说一下Android的Binder机制,你会怎么回答? 我想,我会这么说. 在Android启动的时候,Zygote进程孵化出第一个子进程叫SystemServer,而在 ...
- Java面试官经验谈:如何甄别候选人真实的能力,候选人如何展示值钱技能
我做Java方面的面试官也有些年头了,从校招学生到初级开发到架构师我都面试过.从技术上来讲,候选人通过面试的标准可能千差万别,但归结成一句话,就是候选人达到了职位介绍的要求,且相关项目经验达到足量的年 ...
- 阿里二面,面试官居然把 TCP 三次握手问的这么细致
TCP 的三次握手和四次挥手,可以说是老生常谈的经典问题了,通常也作为各大公司常见的面试考题,具有一定的水平区分度.看似是简单的面试问题,如果你的回答不符合面试官期待的水准,有可能就直接凉凉了. 本文 ...
- 书评<<剑指offer 名企面试官精讲典型编程题>>
前前后后阅读了一周, 感慨很多, 面试考察的是一个人的综合能力, 这一点从面试官的角度去解读, 确实对面试的理解更立体. *) 具体考察的点1) 扎实的基础2) 高质量的代码3) 清晰的思路4) ...
随机推荐
- iOS启动图 LaunchImage LaunchScreen.xib
1.Images.xcassets添加LaunchImage 2.具体大小和添加类别都是可以调的 640*960 (4/4s) 2X ...
- 用Python表达对Android的想法
组员:喻航,张子东 视频:点我 #DISCARD ANDROID TODAY! import turtle import turtle as gui #setting turtle.screensiz ...
- [uiautomator篇][exist 存在,但click错误]
uiautomator定位页面元素是,定位存在的;但是click的时候,发现点的位置不对,(不知道是android系统的问题还是uiautomator的问题,初步怀疑是系统的问题)
- dp好题 玲珑杯 Expected value of the expression
152 - Expected value of the expression Time Limit:2s Memory Limit:128MByte Submissions:135Solved:65 ...
- 九度oj 题目1475:IP数据包解析
题目描述: 我们都学习过计算机网络,知道网络层IP协议数据包的头部格式如下: 其中IHL表示IP头的长度,单位是4字节:总长表示整个数据包的长度,单位是1字节. 传输层的TCP协议数据段的头部格式如下 ...
- POJ 1952
BUY LOW, BUY LOWER Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 7748 Accepted: 267 ...
- git命令综合
Git 是一个很强大的分布式版本控制系统.它不但适用于管理大型开源软件的源代码,管理私人的文档和源代码也有很多优势.Git常用操作命令:1) 远程仓库相关命令检出仓库:$ git clone git: ...
- [转] Makefile 基础 (4) —— Makefile 书写命令
该篇文章为转载,是对原作者系列文章的总汇加上标注. 支持原创,请移步陈浩大神博客:(最原始版本) http://blog.csdn.net/haoel/article/details/2886 我转自 ...
- php接口开发时,数据解析失败问题,字符转义,编码问题
php接口开发时,数据解析失败问题,字符转义,编码问题 情景: A平台--->向接口请求数据---->接口向B平台请求数据---->B平台返回数据给接口---->接口返回数据给 ...
- ajax请求Url加参数的使用方法
var cId = $(this).data('claim-id');var adoptUrl = "<?php echo $this->createUrl('claim/app ...