文档介绍:[DOC]-嵌入式软件开发面试C语言笔试题 答案
嵌入式软件开发面试C语言笔试题 答案
嵌入式软件笔试
**/**********************/***********************
Chapter1语法类(==1);
}
/*return1:little-endian,return0:big-endian*/
。
通用形式如下:
typedefint(*P)();//定义一个函数指针P类型
Pfunction(int(*p)());//定义一个函数返回值P类型,#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题)
#defineSECONDS_PER_YEAR(60*60*24*365)UL//UL怎么个用法,你暂不要加
“标准”宏MIN,这个宏输入两个参数并返回较小的一个。
两个作用:
1)局部变量被声明为static则这一函数调用结束后该变量值保持不变。
2)外部变量被声明为static表明它是一个本地全局变量。该变量只能在该文件内被访问,不能被其它文件访问。
11(关键字const有什么含意,
声明一个变量为只读。
,
1)constinta;2)intconsta;3)constint*a;4)int*consta;5)intconst*consta;
1,2一样a为只读整形变量;3指向一个只读整形变量的指针;4指向整形的只读指针;5指向只读整形的只读指针。
1234的整型变量的值为0xaa55。
int*p;
p=(int*)0x1234;//把整型数0x1234强制转换(typecast)为一指针
*p=0xaa55;
。
__interruptdoublecompute_area(doubleradius)
{
doublearea=PI*radius*radius;
printf("\nArea=%f",area);
returnarea;
}
1)ISR不能传递参数。
2)ISR不能有返回值。
3)ISR应该短且有效率,在ISR中做浮点运算不明智。
,为什么,
voidfoo(void)
{
unsignedinta=6;
intb=-20;
(a+b>6)?puts(">6"):puts("<=6");
}
输出>6,原因是当表达式中存在有符号类型和无符号类型时所有的操作数都自动转换为无符号类型。-20成了一个非常大的正数。//此题的输出确实是这样,但单纯输出a+b时结果又是-14很怪异迷惑~~~~~~~
:
unsignedintzero=0;
unsignedintcompzero=0xFFFF;
如果碰巧int型是16位则上述代码没有问题,否则上面的代码不正确。应写成:unsignedintcompzero=~0;,b,c的值各是多少,
inta=5,b=7,c;
c=a+++b;//c=(a++)+b
a=6,b=7,c=12.//吾已试,结果确如此
#define的区别
#define在预编译的时候处理作机械的字符替换。Typedef在编译的时候处理,并不是作简单的字符替换。而是如同定义变量一样声明一个类型。然后用它去定义这种类型的变量。比如下面的例子:
#definedPSstructs*
dPSp1,p2;
tPSp3,p4;
第一句扩展为structs*p1,p2;
这条代码定义p1为指向结构的指针,p2为一个实际的结构体。第二句定义p3和p4为指向结构体s的指针。/************************
Chapter2系统类
***********************/
,
,要做哪些工作
,
/************************
Chapter3编程类
***********************/
。
#include<>
chars[6]="hell