华为笔试面试技巧解析:C++与预处理知识点

下载需积分: 10 | DOC格式 | 140KB | 更新于2025-01-06 | 108 浏览量 | 1 下载量 举报
收藏
"华为笔试面试指南,包含了C++编程、预处理指令、头文件处理、函数调用等知识点,适用于准备华为招聘笔试和面试的学习者。" 本文将深入解析华为笔试面试指南中涉及的一些关键点,帮助求职者更好地理解和应对相关问题。 1. C++表达式操作: 在给定的表达式题目中,我们需要理解C++中的自增自减运算符优先级和结合性。例如: - A) `a+=(a++)`:先执行`a++`,然后`a`增加1变为5,`a`加5得到10。 - B) `a+=(++a)`:先执行`++a`,使`a`变为5,然后`a`加5得到10。 - C) `(a++)+=a`:错误,因为`(a++)`不是一个有效的左值,不能进行赋值操作。 - D) `(++a)+=(a++)`:先执行`++a`,`a`变为5,然后执行`a++`,`a`增加1变为6,最终结果是112。 2. `sizeof`运算符: - `sizeof(str)`:对于字符串常量数组,其大小等于字符个数+1(用于存放字符串结束符`\0`),所以是17。 - `sizeof(p)`:指针的大小通常是固定的,一般为4字节(32位系统)或8字节(64位系统),这里是4字节。 - `sizeof(n)`:`int`类型的大小通常为4字节。 - 函数参数中的数组在函数内部被视为指针,因此`sizeof(str)`在`Foo`函数内部是4字节。 - `sizeof(p)`:分配了100字节的内存,但指针本身的大小不变,仍是4字节。 3. 预处理指令: - `ifndef/define/endif`:这是预处理器宏定义,用于避免头文件被多次包含,防止编译错误。 4. `#include`和`#include "filename.h"`的区别: - `#include <...>`:用于包含标准库或系统头文件,由编译器查找。 - `#include "..."`:用于包含用户自定义的头文件,编译器首先在当前目录查找,然后在默认的头文件路径中查找。 5. extern "C"的作用: - 在C++中,extern "C"用于告诉编译器这部分代码应按C语言的方式编译和链接,以便C++代码能正确调用C语言编译的函数。 6. switch语句的数据类型限制: - switch语句不支持浮点型(实型)数据,只接受整型、字符型和枚举类型。 7. 动态内存分配与指针: - `VoidGetMemory(char**p,int num)`动态分配内存并赋值给指针`*p`,Test函数中的输出为"hello",因为`GetMemory`成功分配了内存并复制了字符串。 - 第二个`Test`函数示例没有显示完整,但通常,如果未释放内存,可能导致内存泄漏。 通过这些知识点的讲解,我们可以看到华为的笔试面试涵盖了基础的C++语法、内存管理、预处理、类型兼容性等方面,这些都是程序员必备的基础技能。了解并熟练掌握这些知识点,将有助于在华为的招聘过程中取得成功。

相关推荐