嵌入式C语言面试题.doc

嵌入式C语言面试题.doc

ID:50510463

大小:51.02 KB

页数:5页

时间:2020-03-10

嵌入式C语言面试题.doc_第1页
嵌入式C语言面试题.doc_第2页
嵌入式C语言面试题.doc_第3页
嵌入式C语言面试题.doc_第4页
嵌入式C语言面试题.doc_第5页
资源描述:

《嵌入式C语言面试题.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、1、用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#defineSECONDS_PER_YEAR(60*60*24*365)UL◆分析:1)#define语法的基本知识(例如:不能以分号结束,括号的使用)2)懂得预处理器将为你计算常数表达式的值,因此直接写出你如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。3)意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。4)如果你在你的表达式中用到UL(表示无符号长整型),那

2、么你有了一个好的起点。2、写一个"标准"宏MIN,这个宏输入两个参数并返回较小的一个。    #defineMIN(A,B)((A)<=(B)?(A):(B))◆分析:1)标识#define在宏中应用的基本知识。这是很重要的。因为在  嵌入(inline)操作符变为标准C的一部分之前,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。2)三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优的代码,了解这个用法是很重要的

3、。3)懂得在宏中小心地把参数用括号括起来4)我也用这个问题开始讨论宏的副作用,例如:当你写下面的代码时会发生什么事?    least=MIN(*p++,b);3、预处理器标识#error的目的是什么?    指令用途#空指令,无任何效果#include包含一个源代码文件#define定义宏#undef取消已定义的宏#if如果给定条件为真,则编译下面代码#ifdef如果宏已经定义,则编译下面代码#ifndef如果宏没有定义,则编译下面代码#elif如果前面的#if给定条件不为真,当前条件为真,则编译下面代码#end

4、if结束一个#if……#else条件编译块#error停止编译并显示错误信息4.嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环(Infiniteloops)呢?这个问题用几个解决方案。我首选的方案是:①while(1);②while(1)③for(;;){{}}④gotoLoop:...gotoLoop;应试者如给出上面的方案,这说明或者他是一个汇编语言程序员(这也许是好事)或者他是一个想进入新领域的BASIC/FORTRAN程序员。5.用变量a给出下面的定义【数据声明(Datadeclarations)】

5、a)一个整型数(Aninteger)b)一个指向整型数的指针(Apointertoaninteger)c)一个指向指针的的指针,它指向的指针是指向一个整型数(Apointertoapointertoanintege)rd)一个有10个整型数的数组(Anarrayof10integers)e)一个有10个指针的数组,该指针是指向一个整型数的。(Anarrayof10pointerstointegers)f)一个指向有10个整型数数组的指针(Apointertoanarrayof10integers)g)一个指向函数的

6、指针,该函数有一个整型参数并返回一个整型数(Apointertoafunctionthattakesanintegerasanargumentandreturnsaninteger)h)一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数(Anarrayoftenpointerstofunctionsthattakeanintegerargumentandreturnaninteger)◆解:a)inta;//Anintegerb)int*a;//Apointertoanintegerc

7、)int**a;//Apointertoapointertoanintegerd)inta[10];//Anarrayof10integerse)int*a[10];//Anarrayof10pointerstointegersf)int(*a)[10];//Apointertoanarrayof10integersg)int(*a)(int);//Apointertoafunctionathattakesanintegerargumentandreturnsanintegerh)int(*a[10])(int);

8、//Anarrayof10pointerstofunctionsthattakeanintegerargumentandreturnaninteger6、下面的代码输出是什么,为什么?voidfoo(void){  unsignedinta=6;  intb=-20;  (a+b>6)?puts(">6"):puts("<=6");}    ◆答案是输出是"

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。