嵌入式软件工程师笔试:预编译与指针解析
63 浏览量
更新于2024-06-28
1
收藏 86KB DOC 举报
"嵌入式软件工程师笔试题"
嵌入式软件工程师是计算机科学与电子技术相结合的领域,主要负责设计、开发和测试运行在微控制器、嵌入式系统或其他专用硬件上的软件。这份笔试题涉及到的知识点广泛,涵盖了C语言基础、编译过程、内存管理、指针操作以及字符串处理等多个方面。
1. 预编译:预编译是在正式编译之前进行的一种处理,主要目的是处理源代码中的宏定义、条件编译指令等。当源代码包含大量不变的头文件或使用相同编译选项的多个模块时,预编译可以提高编译效率。预编译后的结果保存在预编译头文件中,通常以.gch或.i为扩展名。
2. 指针常量与常量指针的区别:
- `char*const p`:这是一个常量指针,意味着指针变量p的值(即它指向的地址)不可变,但所指的内容可以修改。
- `char const *p`:这是指向常量的指针,意味着p可以改变指向其他位置,但一旦指向某个字符,该字符不可修改。
- `const char *p`:这与`char const *p`相同,表示p可以改变指向,但所指字符不可修改。
3. 字符串数组与字符串指针的比较:
- `str1`、`str2`、`str3`、`str4` 是数组变量,它们在内存中占有连续的存储空间,每个数组都有自己的地址,所以`str1 == str2` 和 `str3 == str4` 都为0,表示它们在内存中不是同一个位置。
- `str5`、`str6`、`str7`、`str8` 是指针,它们存储的是字符串常量的地址。在C语言中,字符串常量是存储在只读内存区,相同的字符串常量在内存中只有一个副本,因此`str5 == str6` 和 `str7 == str8` 都为1,表示它们指向同一个字符串常量。
4. `sizeof` 运算符的使用:
- 在C语言中,`sizeof` 可以计算数组的大小(不包括结束的空字符'\0'),例如 `sizeof(str) / sizeof(str[0])` 返回的是数组元素的数量。
- 在函数内部,如果传入的是数组,由于数组名在函数参数中会退化为指针,`sizeof(str)` 实际上只返回指针的大小,而不是整个数组的大小。因此,对于动态分配的数组或作为函数参数的数组,`sizeof` 不再能正确计算数组长度。在`UpperCase`函数中,`sizeof(str)`只得到指针大小,而不是字符串的长度,这可能会导致数组越界的问题。
这些题目考察了嵌入式软件工程师应具备的基础编程技能和对内存管理的理解,尤其是在C语言环境下的编程实践。在面试或笔试中,掌握这些基本概念和技巧是非常重要的。
160 浏览量
771 浏览量
2022-11-06 上传
2021-10-04 上传
105 浏览量
matlab大师
- 粉丝: 2798
- 资源: 8万+
最新资源
- 通用3C电商网站左侧弹出菜单导航
- 的github
- 智睿企业视频版网站系统 v4.6.0
- 根据vo生成yapi文档:YapiFileGenerattor.zip
- install.zip
- CodeSoft 条形码标签打印开发指南
- GPT-too-AMR2text:复制“ GPT太”的代码
- counterspell:反咒诅咒的 Chrome 扩展
- CodingTestPractice
- 点文件
- 企业文化竞争(6个文件)
- pytorch-pruning.zip
- 天猫左侧导航菜单分类列表
- torch_sparse-0.6.1-cp36-cp36m-win_amd64whl.zip
- SiamSE:“比例等方差可改善连体跟踪”的代码
- BakedModpack:冒雨风险的modpack 2