华为嵌入式笔试题解析:预编译与指针常量
1星 需积分: 9 11 浏览量
更新于2024-09-11
1
收藏 59KB DOC 举报
"这篇资源是来自达内教育的一份华为嵌入式开发的内部笔试题,主要涵盖了预编译的概念及其应用,以及C语言中关于指针和常量的细节。"
在这次笔试题中,涉及到的知识点主要包括:
1. **预编译**:预编译是编译过程的一部分,发生在实际的编译之前。它的主要作用是对源代码进行初步处理,特别是处理那些频繁被包含但改动较少的头文件。当程序由多个模块组成,且所有模块共享相同的标准包含文件和编译选项时,预编译可以显著提高编译效率。预编译会生成一个预编译头文件,存储了预处理信息,后续编译时可以直接使用,减少了编译时间。
2. **指针和常量的结合**:
- `char * const p`:这是一个常量指针,意味着指针`p`的值(即它所指向的地址)不能改变,但它可以指向可变的字符。
- `char const * p` 和 `const char * p`:这两个表示的是指向常量的指针,也就是说,通过这个指针不能修改它所指向的字符,但指针本身是可以改变的。
3. **字符串数组与字符串指针的区别**:
- 数组如`str1`到`str4`在内存中分配了各自的空间,因此比较它们的地址(例如`str1 == str2`)会得到`0`,因为它们是不同的对象。
- 指针如`str5`到`str8`则指向常量区域,这些常量字符串在内存中只有一个副本,因此比较它们的地址(如`str5 == str6`)会得到`1`,因为它们都指向同一块内存。
4. **sizeof运算符的使用**:
- 在C语言中,`sizeof`运算符可以用来计算数据类型的大小或者数组的总大小。在函数外部,`sizeof(str)`能够正确地给出静态数组`str`的长度,包括结束的空字符`\0`。
- 但在函数内部,如果`str`作为参数传递,它会被当作指针处理,`sizeof(str)`只返回指针本身的大小,而不是整个数组的大小。这在处理动态分配的数组或外部数组时需要注意,以避免潜在的边界错误。
这份笔试题集对于理解嵌入式系统开发中的基本编程概念,特别是C语言的细节,有着很好的练习效果。同时,它也提醒了开发者在使用预编译和指针操作时应当注意的问题,以避免潜在的程序错误。
2021-11-19 上传
152 浏览量
2021-10-20 上传
2023-04-18 上传
2021-10-15 上传
2022-01-18 上传
杨汁甘露
- 粉丝: 6
- 资源: 4
最新资源
- Android圆角进度条控件的设计与应用
- mui框架实现带侧边栏的响应式布局
- Android仿知乎横线直线进度条实现教程
- SSM选课系统实现:Spring+SpringMVC+MyBatis源码剖析
- 使用JavaScript开发的流星待办事项应用
- Google Code Jam 2015竞赛回顾与Java编程实践
- Angular 2与NW.js集成:通过Webpack和Gulp构建环境详解
- OneDayTripPlanner:数字化城市旅游活动规划助手
- TinySTM 轻量级原子操作库的详细介绍与安装指南
- 模拟PHP序列化:JavaScript实现序列化与反序列化技术
- ***进销存系统全面功能介绍与开发指南
- 掌握Clojure命名空间的正确重新加载技巧
- 免费获取VMD模态分解Matlab源代码与案例数据
- BuglyEasyToUnity最新更新优化:简化Unity开发者接入流程
- Android学生俱乐部项目任务2解析与实践
- 掌握Elixir语言构建高效分布式网络爬虫