华为嵌入式软件面试精华:预编译与指针深度解析
5星 · 超过95%的资源 需积分: 50 2 浏览量
更新于2024-07-18
7
收藏 561KB PDF 举报
本文档主要聚焦于华为嵌入式软件工程师面试中的常见问题,涉及的关键知识点包括预编译技术的应用、指针类型的区分以及内存管理和字符数组与常量指针的比较。以下是详细的内容解读:
1. **预编译与编译选项**:
- 预编译是一种编译优化技术,用于处理在程序正式编译之前不会改变的大量代码或共享数据。当一个程序由多个模块组成,并且这些模块都依赖于一组标准的包含文件和相同的编译选项时,预编译头(precompiled headers)就显得尤为重要。预编译指令允许编译器在编译过程中提前执行某些操作,从而提高编译效率。
2. **指针类型的区别**:
- `char*const p` 是常量指针,它指针本身不可变,但可以指向的内存是可以修改的。
- `const char* p` 和 `const char* const p` 都是常量字符指针,区别在于前者只是字符不可变,指针本身还是可变的;后者则是指针指向的字符和指针本身都不可变。
- 示例代码展示了不同类型的指针在比较时的特性,如 `str1` 和 `str2` 虽然内容相同,但由于一个是数组,一个是常量指针,所以相等性检查结果为0(false)。
3. **数组和常量指针的内存分析**:
- 数组 `str1` 和 `str2` 以及 `str3` 和 `str4` 分别表示不同的内存区域,尽管内容相同,但由于是动态分配的空间,它们是不同的对象。
- `str5`, `str6`, `str7`, 和 `str8` 是指针,它们指向的是字符串字面量常量区,因此 `str5 == str6` 和 `str5 == str7` 返回 true,因为它们指向同一个内存地址。
4. **sizeof运算符的问题**:
- 在 `toUpperCase` 函数中,`for` 循环的条件判断中,`sizeof(str)` 应该除以 `sizeof(str[0])` 来计算数组元素的数量,而不是整个数组的大小。这是因为在C/C++中,`sizeof(str)` 返回的是数组整体的大小,而 `sizeof(str[0])` 返回的是单个元素的大小。
- 另外,在计算 `str` 字符串的长度时,同样需要使用 `sizeof(str)/sizeof(str[0])`,这表明原代码中可能存在的第二个错误。
华为嵌入式软件工程师面试中会关注基础的编程概念、编译原理、指针操作的理解以及对内存管理的细致考虑。求职者在准备这类面试时,不仅要深入理解理论知识,还要能灵活运用到实际编程场景中。
952 浏览量
584 浏览量
162 浏览量
174 浏览量
2024-09-26 上传
355 浏览量
905 浏览量
zhouge000
- 粉丝: 115
- 资源: 5
最新资源
- (Qt4.8)Qt QTablewidget分页、翻页
- CMSIS DAP/DAPLink 仿真器 硬件开源/软件开源 支持 JTAG/SWD/虚拟串口 替代jlink、stlink-电路方案
- pdksh-5.2.14-37.el5_8.1.i386
- Codewars:Codewars中的编码实践
- 桌面下落文字程序源代码
- NSGraph-开源
- ImageMagick-7.0.11-0.tar.gz
- company-box:带有图标的公司前端
- Grader
- glove.6B(词向量).zip
- 基于HTML实现的仿好孩子育儿网discuz手机wap社区网站模板(css+html+js+图样).zip
- 4-20ma转RS485,模拟量转RS485数字采集模块资料.zip
- 如意网络验证系统1.71 php全功能【易语言】DLL接口板
- 40个圣诞图标 .xd .ai .sketch素材下载
- PebbleMagic8Ball:卵石时间魔术8球
- sai