一道C笔试题
Author: Scurffybear Date: 2009.09.08
最近在招新人,下面是一道C的面试题,面试的印度人中,没有一个人做对,我粗看了一下题,在没有看答案前,我自己也做错了,嗯,是的,没啥不好意思的,我觉得这个题目很容易使人产生误解,又或者择C有深厚功底的人能躲过这一个障眼法?
以下是题目,
main()
{
char *p1=“name”;
char *p2;
p2=(char*)malloc(20);
memset (p2, 0, 20);
while(*p2++ = *p1++);
printf(“%s\n”,p2);
}
写出打印内容.
我认为输出是'name',正确答案是输出空,我想了半天没想明白,最后把这段程序放在VC++进行单步跟踪才搞明白.事后想想这么简单的程序能够使几乎所有人都掉入同一个陷阱,实在很有意思.可能真正的高手可能不屑于这一信手拈来的小问题,但是确实是让我们这些半吊子做技术很容易犯错误的一个小问题.也说明公司吸引力太差,没有基础扎实的人前来应聘,不过,对于技术支持非研发,真正在工作中基本不会用到这方面的知识.
相关文档:
【原型】
type fun( type arg1, type arg2, ...
);
【描述】
主要用在参数个数不确定的函数中,例如:printf函数。
【使用方法】
参考:glib/manual/Add.c
#include <stdarg.h>
#include <stdio.h>
int add_em_up (int coun ......
http://blog.csdn.net/eroswang/archive/2009/06/12/4265046.aspx
1,防止一个头文件被重复包含
#ifndef COMDEF_H
#define COMDEF_H
//头文件内容
#endif
2,重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植。
typedef unsigned char boolea ......
编译,编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成可执行程序。
C源程序头文件-->预编译处理(cpp)-->编译程序本身-->优化程序-->汇编程序-->链接程序--> ......
char* my_strrev( char* string )
{
char *left, *right, ch;
left = right = string;
while( *right++ != '\0');
right -= 2;
while( left<right )
{
ch = *left;
*left = *right;
*right = ch;
++left; --right;
&n ......
C/C++中Static的作用详述
1.先来介绍它的第一条也是最重要的一条:隐藏。
当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c.
下面是a.c的内容:
char a = 'A'; // global variable
void ......