最近在招新人,下面是一道C的面试题,面试的印度人中,没有一个人做对,我粗看了一下题,在没有看答案前,我自己也做错了,嗯,是的,没啥不好意思的,我觉得这个题目很容易使人产生误解,又或者择C有深厚功底的人能躲过这一个障眼法?
以下是题目,
main()
{
char *p1=“name”;
char *p2;
p2=(char*)malloc(20);
memset (p2, 0, 20);
while(*p2++ = *p1++);
printf(“%sn”,p2);
}
{
char *p1=“name”;
char *p2;
p2=(char*)malloc(20);
memset (p2, 0, 20);
while(*p2++ = *p1++);
printf(“%sn”,p2);
}
写出打印内容.
我认为输出是’name’,正确答案是输出空,我想了半天没想明白,最后把这段程序放在VC++进行单步跟踪才搞明白.事后想想这么简单的程序能够使几乎所有人都掉入同一个陷阱,实在很有意思.可能真正的高手可能不屑于这一信手拈来的小问题,但是确实是让我们这些半吊子做技术很容易犯错误的一个小问题.也说明公司吸引力太差,没有基础扎实的人前来应聘,不过,对于技术支持非研发,真正在工作中基本不会用到这方面的知识.