从优快云各个博客上摘选的一些容易做错的嵌入式软件的笔试题,做一下记录,让自己记住。
文章转自:嵌入式经典面试题。
1、用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)
解答:这一题主要容易错的地方就是:意识到这个表达式将使一个16位机的整型数溢出,因此要用到长整型符号L,告诉编译器这个常数是的长整型数。
#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL
2、写一个"标准"宏MIN,这个宏输入两个参数并返回较小的一个。
解答:这一题主要容易错的地方就是:懂得在宏中小心地把参数用括号括起来。
#define MIN(A,B) ((A)<=(B)?(A):(B))
当然,使用宏也是有副作用的。就拿这一个例子来说:该宏定义对MIN(*p++, b)的作用结果是:((*p++) <= (b) ? (*p++) : (b)) 这个表达式会产生副作用,指针p会作两次++自增操作。
3、用变量a给出下面的定义:一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数。
解答:这一道题主要容易错的地方就是:函数指针、指针数组。
int (*a[10])(int);
4、关键字static的作用是什么?
解答:在C语言中,关键字static有三个明显的作用:
- 在函数体中,一个被声明为静态的变量在这一函数被调用过程中只会被分配一次内存,且整个运行期间不会重新分配;
- 在函数体外、某个源文件内,一个被声明为静态的变量只可被该源文件内的所有函数访问,但不能被其他源文件的函数访问。它是一个本地的全局变量;
- 在某个源文件内,一个被声明为静态的函数仅仅只可以被这个源文件的其它函数调用。也就是说,这个函数被限制在声明它的源文件的本地范围之内使用。
5、关键字const的作用是什么?
解答:简单地说,const意味着常数。
- const定义的变量,它的值不能被改变,在整个作用域中都保持固定;
- 同宏定义一样,可以避免意义模糊的数字出现,同样可以很方便地进行参数的调整和修改;
- 可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。const是通过编译器在编译的时候执行检查来确保实现的。
const与指针
下面的声明都是什么意思:`
1.const int a;
2.int const a;
3.const int *a;
4.int * const a;
5.const int * const a;
6.int const * const a;`
前两个的作用是一样,a是一个常整型数;
- 第三个意味着a是一个指向常整型数的指针(也就是,整型数是不可修改的,但指针可以);
- 第四个意思a是一个指向整型 数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的);
- 最后两个意味着a是一个指向常整型数的常指针(也就是说,指针指向的整型数 是不可修改的,同时指针也是不可修改的)。
-
const与函数
- const 通常用在函数形参中,如果形参是一个指针,为了防止在函数内部修改指针指向的数据,就可以用 const 来限制。比如在String的程序中有很多const修饰形参的情况:
void StringCopy(char* strDestination, const char *strSource);- const还可以表示该函数返回一个常量,放在函数的返回值的位置。比如:
const char * GetString(void);

本文精选了嵌入式软件开发中常见的笔试题目,并详细解析了每一道题目的正确答案及注意事项,涵盖宏定义、指针、中断等多个方面。
最低0.47元/天 解锁文章
7951

被折叠的 条评论
为什么被折叠?



