C++面试必备:经典笔试题解析

需积分: 22 6 下载量 166 浏览量 更新于2024-11-27 收藏 208KB DOC 举报
"C++面试笔试经典题目集合" 这篇资源主要涵盖了C++面试和笔试中常见的问题和标准答案,旨在帮助求职者准备技术面试。以下是其中涉及到的关键知识点: 1. **布尔值比较**:在C++中,BOOL类型的变量flag与零值比较时,正确的if语句应该是`if(flag)`和`if(!flag)`。避免使用等于或不等于特定布尔值(如TRUE, FALSE, 1, 0)的比较,因为这不符合良好编程风格。 2. **浮点数比较**:比较浮点数x与零值时,应避免直接使用"=="或"!=",因为浮点数的精度问题可能导致错误。正确的做法是设置一个很小的容差值(如EPSILON),然后用大于等于或小于等于来比较。例如:`if((x >= -EPSILON) && (x <= EPSILON))`。直接写`if(x == 0.0)`是不建议的。 3. **指针比较**:对于指针p,与零值比较的标准方式是`if(p == NULL)`和`if(p != NULL)`,不应该直接使用数字0进行比较。 4. **sizeof运算符**:`sizeof`运算符用于计算变量或数据类型的大小。在给定的例子中: - `sizeof(str)`返回字符串数组的大小,包括结束符'\0',因此是6个字符。 - `sizeof(p)`返回指针本身的大小,对于32位系统通常是4字节。 - `sizeof(n)`返回整型变量n的大小,同样在32位系统中是4字节。 - 在函数`Func`中,`sizeof(str)`返回的是指针的大小,因为str在这里是函数参数,实际上是一个指针,所以也是4字节。 - 分配动态内存后,`sizeof(p)`依然返回指针的大小,而不是分配的内存大小。 5. **头文件保护宏**:`#ifndef/define/endif`常用于头文件中,防止头文件被多次包含。当第一次包含时,定义宏防止再次包含,从而避免重复定义错误。 6. **#include的两种形式**:`#include<filename.h>`是标准库包含,编译器从预定义的标准库路径开始寻找;`#include"filename.h"`是用户自定义头文件包含,编译器从当前工作目录开始搜索。 7. **const关键字**:const有多种用途: - 声明常量,使得变量在声明后不能被修改。 - 作为函数参数,表示函数不会修改传入的参数。 - 作为函数返回类型,表明返回的对象不会被修改。 - 定义常量指针和指针常量,控制指针或指针指向的数据是否可变。 8. **内存管理**:涉及动态内存分配`malloc()`,`sizeof(p)`在此处返回的是指针的大小,而不是分配的内存空间大小。实际分配的内存大小需要根据分配语句来确定。 这些知识点在C++面试中非常常见,理解和掌握它们对于面试准备至关重要。