嵌入式研发工程师面试试题(20180131183310).pdf
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
嵌入式研发工程师面试试题 本文档提供了嵌入式研发工程师面试试题,涵盖了 ANSI C/C++ 方面的知识,包括字符数组的初始化、数组空间的分配、指针数组的定义、GCC 版本支持的编程语言、CHAR_BIT 头文件、整数型指针数组、局部变量的全局生命期、常量字符串的定义、变量的引用、malloc 函数的准备工作、realloc 函数的使用注意事项、strtok 函数的使用注意事项、gets 函数的使用注意事项、C 语言的词法分析策略、a+++++b 的含义、Bool 变量的 TRUE 和 FALSE 值的定义、const 和 #define 的区别、volatile 的含义和使用注意事项等。 一、知识点总结 1. 字符数组的初始化:在 C 中,可以使用字符数组来存储字符串,初始化方法有多种,如使用字符串字面量、使用赋值语句等。 2. 数组空间的分配:在 C 中,可以使用 malloc 函数来分配数组空间,需要注意释放空间以避免内存泄露。 3. 指针数组的定义:在 C 中,可以使用指针数组来存储指针,定义方法是使用星号 (*) 号来表示指针类型。 4. GCC 版本支持的编程语言:GCC 3.2.2 版本支持 C、C++、Objective-C 等编程语言。 5. CHAR_BIT 头文件:在 C 中,CHAR_BIT 头文件是用于定义字符的位数的常量。 6. 整数型指针数组:在 C 中,可以使用整数型指针数组来存储整数指针,定义方法是使用星号 (*) 号来表示指针类型。 7. 局部变量的全局生命期:在 C 中,局部变量可以使用 static 关键字来定义,使其具有全局生命期。 8. 常量字符串的定义:在 C 中,常量字符串可以使用 const 关键字来定义,或者使用 #define 宏定义。 9. 变量的引用:在 C 中,变量可以在不同的文件之间引用,使用 extern 关键字来声明外部变量。 10. malloc 函数的准备工作:在 C 中,使用 malloc 函数之前需要包含 stdlib.h 头文件,并且需要检查返回值是否为空指针。 11. realloc 函数的使用注意事项:在 C 中,使用 realloc 函数时需要注意内存泄露的问题,并且需要检查返回值是否为空指针。 12. strtok 函数的使用注意事项:在 C 中,使用 strtok 函数时需要注意输入字符串的结尾符号的问题。 13. gets 函数的使用注意事项:在 C 中,使用 gets 函数时需要注意输入字符串的结尾符号的问题。 14. C 语言的词法分析策略:在 C 中,词法分析策略是使用最大 mux strategy,尽量匹配最长的字符串。 15. a+++++b 的含义:在 C 中,a+++++b 的含义是将 a 自增 1 次,然后和 b 进行加法运算。 16. Bool 变量的 TRUE 和 FALSE 值的定义:在 C 中,Bool 变量的 TRUE 和 FALSE 值可以使用 enum 枚举类型来定义。 17. const 和 #define 的区别:在 C 中,const 关键字用于定义常量,而 #define 宏定义用于定义宏常量。 18. volatile 的含义和使用注意事项:在 C 中,volatile 关键字用于定义易失性变量,使用时需要注意对编译器的暗示。 二、匈牙利命名法 匈牙利命名法是一种编程命名惯例,使用双字母前缀来表示变量的类型。优点是便于阅读和理解代码,但缺点是容易与其他命名惯例混淆。 三、x, y, *p 的值 在下面的代码中: int x, y, z = 2; int *p = &z; x = sizeof *p; y = x / *p; x 的值为 4,y 的值为 2。 四、函数声明和定义 在 C 中,函数声明和定义可以使用函数指针来实现。例如: int (*foo())(); int (*foo())[]; int (*foo[])(); (*(void(*)())0)(); 五、malloc 函数的强制类型转换 在 C 中,使用 malloc 函数时需要进行强制类型转换,如: int (*monthp)[31]; monthp = (int (*)[31])malloc(31 * sizeof(int)); 六、运算符优先级 在 C 中,运算符优先级可以使用括号来改变优先级顺序。 七、x, y 的值 在下面的代码中: int x = 10, y = 3; x ^= y; y ^= x; x ^= y; x 的值为 13,y 的值为 7。 八、days 数组 在下面的代码中: int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int calendar[12][31]; int (*monthp)[31]; int *dayp; int i; memset(calendar, 0, sizeof(calendar)); i = 0; for (monthp = calendar; monthp <= &calendar[11][31]; monthp++) { printnum(n / 10); putchar('0' + n % 10); } days 数组的值是每个月的天数,calendar 是一个二维数组,用于存储每个月的天数。 九、memchr 函数 memchr 函数用于在内存块中查找指定的字符。 十、memmove 函数 memmove 函数用于将内存块从一个位置复制到另一个位置。
- 粉丝: 29
- 资源: 7802
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助