在多人面试的环境下,你一定要在面试官眼中留下深刻影响,这样你才能有更大的机会成功!就像很多人都会的题目一定要答的流利完美,没有丝毫漏洞,只有这样才能有更多的机会。
自己实现strcpy函数,这个题目大家很定都很熟悉
void my_strcpy(char* dest, char* src)
{
while (*src != '\0')
{
*dest = *src;
*dest++;
*src++;
}
*dest == *src;
}
上面这段代码是可以运行出来,但在面试官眼中勉强及格,如果10分是满分,最多也就6分吧。程序最终得是严谨的,不能只运行出一般情况,特殊情况特殊处理。
看一下是否有能合并的代码,使程序看起来不那么冗长
void my_strcpy(char* dest, char* src)
{
while (*dest++ = *src++)
{
;
}
}
以上是将代码合并起来,7分
#include <assert.h>//断言
void my_strcpy(char* dest, char* src)
{
assert(dest);//检验空间不为空
assert(src);//检验字符串不为空
while (*dest++ = *src++)
{
;
}
}
增加了断言,防止空字符串,8分
#include <assert.h>//断言
void my_strcpy(char* dest, const char* src)//const修饰的数据类型是指常类型,不能改变其值
{
assert(dest);//检验空间不为空
assert(src);//检验字符串不为空
while (*dest++ = *src++)//拷贝时防止参数放错位子
{
;
}
}
添加了const关键字,防止参数放错位子,9分
#include <assert.h>
//增加返回类型,函数返回方便接收拷贝后字符串的首地址
char* my_strcpy(char* dest, const char* scr)
{
assert(dest);
assert(scr);
char* last=dest;
while (*dest++ = *scr++)
;
return last;
}
加上增加返回类型,函数返回方便接收拷贝后字符串的首地址,最终这个才是最好的
细节很重要,机会也在身边,就看你把不把握住了。只有全方位的考虑,才能实现完美,万一在笔试过程中时间不够用了,可以考虑特殊情况,写出一点有一点的分数。加油!