凹凸笔考试目.docVIP

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
凹凸笔考试目

凹凸笔试题目(嵌入式软件开发) ? Embedded Software Design Engineer 1 读程序段,回答问题 (a) int main(int argc,char *argv[]) { int c=9,d=0; c=c++%5; d=c; printf(d=%d\n,d); return 0; } a) 写出程序输出 b) 在一个可移植的系统中这种表达式是否存在风险?why? 答案:5 存在风险,因为c=c++%5;这个表达式对c有两次修改,行为未定义,c的值不确定 (b) #include stdio.h int a=0; // data section int b; ? // data section static char c;? // BSS int main(int argc,char *argv[]) { char d=4;? // stack static short e;? ? // BSS a++; b=100; c=(char)++a; e=(++d)++; printf(a=%d, b=%d, c=%d, d= %d, e=%d,a,b,c,d,e); return 0; } a) 写出程序输出 b) 编译器如果安排各个变量(a,b,c,d)在内存中的布局(eg. stack,heap,data section,bss section),最好用图形方式描述。 答案:a=2,b=100,c=2,d=6,e=5 2 中断是嵌入式系统中重要的组成部分,这导致了许多编译开发商提供一种扩展:让标准C支持中断,产生了一个新的关键字__interrupt。下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(ISR),请评论以下这段代码。 __interrupt double compute_area(double radius) { double area = PI * radius *radius; printf(nArea = %f, area); return area; } 答案 a)ISR不能返回一个值; ? b)ISR不能传递参数; ? c)浮点一般都是不可重入的; ? d)printf函数有重入和性能上的问题。 3 C/C++基础知识问题 a) 关键字volatile在编译时有什么含义?并给出三个不同使用场景的例子(可以伪代码或者文字描述)。 用volatile关键字定义变量,相当于告诉编译器,这个变量的值会随时发生变化,每次使用时都需要去内存里 重新读取它的值,并不要随意针对它作优化。 建议使用volatile变量的场所: (1) 并行设备的硬件寄存器 (2) 一个中断服务子程序中会访问到的非自动变量(全局变量) (3) 多线程应用中被几个任务共享的变量 b) C语言中static关键字的具体作用有哪些 ? 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 ???? 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数 访问。它是一个本地的全局变量。 ???? 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的 模块的本地范围内使用。 ???? static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用; ???? static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值; ???? static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝 c) 请问下面三种变量声明有何区别?请给出具体含义 int const *p; int* const p; int const* const p; 答案 一个指向常整型数的指针 一个指向整型数的常指针 一个指向常整型数的常指针 4 嵌入式系统相关问题 a) 对于整形变量A=0请画出在little endian及big endian的方式下在内存中是如何存储的。 little endian??????? big endian 刚好反过来 ? 高地址--〉 0x12????? 低地址--〉 0x12 ???????????? 0x34???????????????? 0x34 ???????????? 0x56???????????????? 0x56 ? 低地址--〉 0x78????? 高地址--〉 0x78 b) 在ARM系统中,函数调用的时候,参数是通过哪种方式传递的? 参数=4时候,通过R0~R3传递,4的通过压栈方式传递 c) 中断

文档评论(0)

phltaotao + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档