C++经典面试题集:技巧与陷阱

需积分: 9 2 下载量 58 浏览量 更新于2024-09-16 收藏 61KB DOC 举报
本资源是一份针对C++程序员的经典面试试题汇编,主要考察基础概念和编程习惯。题目旨在测试候选人的语言理解和实践技巧。 第一部分(10分)着重于比较运算符在不同数据类型(BOOL、float、指针)上的正确使用。对于布尔型变量`flag`,正确的方法是使用`if(flag)`和`if(!flag)`,避免使用等价于`true`或`false`的常量如`==TRUE`或`==FALSE`。对于浮点数`x`,应使用一个较小的常量(如`const float EPSILON = 0.00001;`)来判断其接近零值,例如`if((x >= -EPSILON) && (x <= EPSILON))`。对于字符指针`p`,正确的比较是`if(p == NULL)`和`if(p != NULL)`,而非直接与数字0比较。 第二部分(10分)涉及C++中的内存占用计算。`sizeof`操作符用于获取变量或数据结构在内存中的字节数。在给定的示例中,`char str[] = "Hello"`的大小是6个字节,`char *p = str`是4个字节(通常指针占用4字节),整型变量`int n = 10`也是4字节。函数参数`void Func(char str[100])`的`str`由于是数组引用,其大小仍然是4字节。动态分配的内存`void *p = malloc(100)`的大小同样是4字节,因为指针本身不包含实际分配的内存大小。 第三部分(25分)为简答题,涵盖了C++预处理指令的理解。`ifndef/define/endif`组合用于条件编译,确保一个头文件只被包含一次,避免重复定义。`#include <filename.h>`和`#include "filename.h"`的区别在于搜索头文件的位置:前者从标准库路径查找,后者从当前工作目录查找。`const`关键字在C++中具有多种用途,包括常量变量声明(防止修改)、枚举类型、字符串字面量(常量字符串)以及函数参数中的不变值等,体现了类型安全和提高代码可读性的原则。 通过这些题目,面试官可以评估应聘者对C++语言基础、内存管理、预处理器指令和编程最佳实践的理解程度,这对于评估他们的技术能力和编码习惯至关重要。