C语言最新面试题系列二

本文涵盖了C语言面试中的重点题目,包括预处理指令#define的应用,宏MIN的编写,预处理器#error的作用,如何编写死循环,关键字static、const和volatile的含义,位操作技巧,以及中断服务子程序的讨论。同时,文章探讨了动态内存分配在嵌入式系统中的挑战和typedef与预处理器的相似用途。
摘要由CSDN通过智能技术生成

1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)

2.写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。

3. 预处理器标识#error的目的是什么?

4嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢?

5. 用变量a给出下面的定义

6. 关键字static的作用是什么?

7.关键字const是什么含意?

8. 关键字volatile有什么含意 并给出三个不同的例子

9. 嵌入式系统总是要用户对变量或寄存器进行位操作。给定一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清除a 的bit 3。在以上两个操作中,要保持其它位不变。

10. 嵌入式系统经常具有要求程序员去访问某特定的内存位置的特点。在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaa66。编译器是一个纯粹的ANSI编译器。写代码去完成这一任务。

11. 中断是嵌入式系统中重要的组成部分,这导致了很多编译开发商提供一种扩展—让标准C支持中断。具代表事实是,产生了一个新的关键字 __interrupt。下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(ISR),请评论一下这段代码的。

12 . 下面的代码输出是什么,为什么?

void foo(void) 
	{ 
	unsigned int a = 6; 
	int b = -20; 
	(a+b > 6) puts("> 6") : puts("<= 6"); 
	} 

13. 评价下面的代码片断:

 unsigned int zero = 0; 
 unsigned int compzero = 0xFFFF; 

14. 尽管不像非嵌入式计算机那么常见,嵌入式系统还是有从堆(heap)中动态分配内存的过程的。那么嵌入式系统中,动态分配内存可能发生的问题是什么?

15. Typedef 在C语言中频繁用以声明一个已经存在的数据类型的同义字。也可以用预处理器做类似的事。例如,思考一下下面的例子:

 #define dPS struct s * 
 typedef struct s * tPS; 

16. C语言同意一些令人震惊的结构,下面的结构是合法的吗,如果是它做些什么?

 int a = 5, b = 7, c; 
 c = a+++b; 

答案区:

1、 #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL

1) #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)
2) 预处理器将为你计算常数表达式的值,因
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值