C++面试必备:基础试题与解析
需积分: 33 147 浏览量
更新于2024-09-17
1
收藏 142KB PDF 举报
"C++经典面试题"
这是一份针对C++和C程序员设计的经典面试题集,主要测试考生的基础编程技能和对C++/C语言的理解程度,而不涉及高级概念如数据结构、算法或复杂的语法。题目涵盖基本类型比较、sizeof运算符的应用、头文件处理、const关键字的用途、C++与C兼容性问题,以及内存管理等多个方面。
1. **基本类型与“零值”比较**:
- 对于BOOL类型的flag,与“零值”比较的if语句通常是`if(flag == FALSE)`或`if(!flag)`。
- 对于float类型的x,与“零值”比较的if语句可以是`if(x == 0.0)`或`if(x != 0.0)`。
- 对于char类型的指针p,与“零值”(空指针)比较的if语句通常是`if(p == NULL)`或`if(p != NULL)`。
2. **sizeof运算符**:
- 在`void Func(char str[100])`中,`sizeof(str)`会返回数组的大小,即100,因为数组在函数参数中作为指针传递,其大小是类型(char)的大小乘以数组长度。
- 当`char str[] = "Hello"`定义在全局或静态存储区时,`sizeof(str)`会返回6,包括字符串结束符'\0'。
- 对于`char *p = str;`,`sizeof(p)`始终返回指针的大小,通常为4或8字节,取决于系统。
- `int n = 10;`的`sizeof(n)`通常为4字节(32位系统)或8字节(64位系统)。
- 分配100字节的动态内存后,`void *p = malloc(100);`的`sizeof(p)`依然返回指针的大小,与`p`指向的内容无关。
3. **简答题**:
- `ifndef/define/endif`通常用于防止头文件被多次包含,确保每个头文件只被预处理一次。
- `#include <filename.h>`是标准库引用,搜索路径在编译器预定义的目录;`#include "filename.h"`是用户库引用,先在当前目录搜索,然后是编译器指定的用户库路径。
- const可以用来声明常量,防止变量被意外修改,也可以用于函数参数,表明参数不会被函数内部修改,有助于编译器优化。
- C++使用extern "C"是为了兼容C编译器,因为C++使用名称修饰(name mangling),而C不使用,这样可以确保C函数在C++代码中能正确链接。
- 第一个for循环的优点是简洁,但缺点是无论条件是否满足,循环都会执行N次。第二个for循环的优点是只有满足条件时才会执行循环,但缺点是代码重复,增加了阅读和维护的复杂性。
4. **内存思考题**:
- `void GetMemory(char* p)`函数分配的内存是在堆上,但函数结束后,分配的内存没有被释放,可能导致内存泄漏。如果`Test`函数或其他地方没有保存对`p`的引用,这块内存将无法访问。
- 在`Test`函数中直接调用`GetMemory`,`p`只是传递了一个副本,不会改变`Test`函数外部的`p`,因此`p`在`Test`函数内部仍然是未初始化的,尝试访问可能会导致未定义行为。
以上内容详尽解答了题目中涉及的C++基础知识,对于准备C++面试或提升编程技能都有很大帮助。
2008-05-16 上传
2011-10-14 上传
2008-12-02 上传
2011-04-25 上传
2011-08-26 上传
2009-05-07 上传
zf13momo
- 粉丝: 0
- 资源: 6
最新资源
- 火炬连体网络在MNIST的2D嵌入实现示例
- Angular插件增强Application Insights JavaScript SDK功能
- 实时三维重建:InfiniTAM的ros驱动应用
- Spring与Mybatis整合的配置与实践
- Vozy前端技术测试深入体验与模板参考
- React应用实现语音转文字功能介绍
- PHPMailer-6.6.4: PHP邮件收发类库的详细介绍
- Felineboard:为猫主人设计的交互式仪表板
- PGRFileManager:功能强大的开源Ajax文件管理器
- Pytest-Html定制测试报告与源代码封装教程
- Angular开发与部署指南:从创建到测试
- BASIC-BINARY-IPC系统:进程间通信的非阻塞接口
- LTK3D: Common Lisp中的基础3D图形实现
- Timer-Counter-Lister:官方源代码及更新发布
- Galaxia REST API:面向地球问题的解决方案
- Node.js模块:随机动物实例教程与源码解析