华为C/C++面试题精华汇总与解答

需积分: 3 7 下载量 8 浏览量 更新于2024-09-14 6 收藏 44KB DOC 举报
本文主要涵盖了华为C/C++面试题的一些关键知识点,适合准备应聘华为或对技术面试有需求的求职者。以下是详细的内容概要: 1. 表达式判断与变量赋值: - 题目涉及四个C/C++表达式:`a += (a++)`, `a += (++a)`, `(a++) += a`, 和 `(++a) += (a++)`。分析显示,选项C是错误的,因为C++表达式中的左操作符`(a++)`不是一个有效的变量,不能进行赋值。修改后的正确顺序是:9, 10, 10, 11。这些题目考察了自增运算符的优先级和应用。 2. sizeof运算符的应用: - 对不同类型和作用域的变量进行了sizeof计算。例如,`str`字符数组的大小是25,指针`p`和整型变量`n`都是4字节,动态分配的内存指针`p`同样为4字节,而`str`在函数中的大小仍为100个字符,但作为函数参数传递时,实际占用空间为4字节。`malloc`返回的指针`p`同样为4字节,表示存储地址。 3. 预处理指令和包含规则: - `#ifndef/define/endif`用于条件编译,避免头文件的重复包含。`#include`用于引入标准库或系统头文件,`#include "filename.h"`用于引入自定义的头文件。 - `extern "C"`声明用于在C++代码中调用C编译后的函数,确保正确的名称解析和链接。 4. switch语句的限制: - switch语句不支持实型(如float或double)数据类型的匹配,只能用于整型、枚举类型或者字符串常量。 5. 动态内存管理和内存管理相关问题: - `GetMemory`函数演示了如何动态分配内存,通过指针接收并初始化一个指定长度的字符数组。`Test`函数中,使用`NULL`初始化指针`str`。 以上知识点涵盖C/C++的基础语法、内存管理、预处理指令和函数调用规则,以及常见的面试题目类型。对于面试者来说,理解和掌握这些内容有助于在华为或其他公司C/C++面试中展示自己的技能和理解深度。