嵌入式C语言面试题目汇总(一)
一、预处理(Preprocessor)
1、用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)
2、写一个\"标准\"宏MIN ,这个宏输入两个参数并返回较小的一个。
二、死循环(Infinite loops)
3、嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢?
三、数据声明(Data declarations)
4、用变量a给出下面的定义
a)、一个整型数(An integer)
b)、一个指向整型数的指针( A pointer to an integer)
c)、一个指向指针的的指针,它指向的指针是指向一个整型数( A pointer to a pointer to an intege)
d)、一个有10个整型数的数组( An array of 10 integers)
e)、 一个有10个指针的数组,该指针是指向一个整型数的。(An array of 10 pointers to integers)
f)、 一个指向有10个整型数数组的指针( A pointer to an array of 10 integers) g)、 一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a function that takes an integer as an argument and returns an integer)
h)、 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数( An array of ten pointers to functions that take an integer argument and return an integer )
5、关键字static的作用是什么?
1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
华清远见嵌入式学院
2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。
6、关键字const有什么含意?
7、关键字volatile有什么含意?并给出三个不同的例子。
1)、一个参数既可以是const还可以是volatile吗?解释为什么。 2)、一个指针可以是volatile 吗?解释为什么。 3)、下面的函数有什么错误: int square(volatile int *ptr) {
return *ptr * *ptr;
}
四、位操作(Bit manipulation)
8、嵌入式系统总是要用户对变量或寄存器进行位操作。给定一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清除a 的bit 3。在以上两个操作中,要保持其它位不变。
五、访问固定的内存位置(Accessing fixed memory locations)
9、嵌入式系统经常具有要求程序员去访问某特定的内存位置的特点。在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaa66。编译器是一个纯粹的ANSI编译器。写代码去完成这一任务。
10、下面的代码输出是什么,为什么? void foo(void) {
unsigned int a = 6; int b = -20;
(a+b > 6) ? puts(\"> 6\") : puts(\"<= 6\"); }
华清远见嵌入式学院
11、评价下面的代码片断:
unsigned int zero = 0;
unsigned int compzero = 0xFFFF;
12、int a = 5, b = 7, c;
c = a+++b;
因篇幅问题不能全部显示,请点此查看更多更全内容