华为嵌入式软件工程师面试题解析
版权申诉
5星 · 超过95%的资源 131 浏览量
更新于2024-06-25
1
收藏 660KB PDF 举报
"华为嵌入式软件工程师试题汇.pdf"
这篇文档是华为针对嵌入式软件工程师的面试试题集,包含了几个关键的编程概念和技术问题。以下是这些知识点的详细解释:
1. **预编译**:
预编译是在正式编译之前进行的一个步骤,主要目的是处理源代码中的预处理器指令(如`#include`,`#define`等)。当大型代码体(如头文件)不经常改动但被多个模块共享时,预编译能提高编译效率,因为编译器只需要处理改动的部分,而不是整个文件。预编译头文件(`.pch`)就是预编译后的结果,它减少了重复编译的时间。
2. **指针与常量**:
- `char*const p`:这是一个常量指针,意味着指针`p`的值(即它所指向的地址)不能改变,但指针可以修改所指向的数据(如果数据本身不是常量的话)。
- `char const *p` 和 `const char *p`:这两个声明是等价的,表示指向常量的指针,即指针`p`可以改变,但`p`所指向的字符不可修改。
3. **字符串与数组**:
在C++中,字符串实际上是一组字符数组。`str1`、`str2`、`str3`和`str4`都是数组,每个都有自己的内存空间。而`str5`、`str6`、`str7`和`str8`都是指向常量字符数组的指针,它们指向同一块内存区域,因为它们都是对字符串字面量的引用。数组比较(如`str1 == str2`)会比较内存地址,而字符串字面量的地址是相同的,所以`str5`和`str6`相等,`str7`和`str8`也相等。
4. **sizeof运算符**:
在C++中,`sizeof`用于计算对象或类型的大小。在函数内部,当`sizeof`操作应用于数组参数时,由于数组名在函数调用中退化为指针,它只能返回指针的大小(通常是4或8个字节),而不是数组的实际大小。因此,在`UpperCase`函数中,`sizeof(str)`会返回指针的大小,而不是字符串的长度。而在函数外部,`str`被视为静态数组,`sizeof(str)`将返回整个数组(包括结束符`\0`)的大小。
在给定的代码中,`UpperCase`函数中用于循环的`sizeof(str)/sizeof(str[0])`可能会导致错误,因为它没有考虑到字符串的实际长度。在`cout`语句中,函数外的`sizeof(str)/sizeof(str[0])`正确地计算了数组的元素数量,即字符串的长度(不包括结束符`\0`),这里为5。在调用`UpperCase`后,`cout<<str`将输出转换为大写的字符串"ABCDE"。
172 浏览量
点击了解资源详情
点击了解资源详情
788 浏览量
2022-07-14 上传
2023-10-15 上传
142 浏览量
129 浏览量
2021-12-26 上传
hhappy0123456789
- 粉丝: 77
- 资源: 5万+