C++面试必备:经典笔试题解析
需积分: 22 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++面试中非常常见,理解和掌握它们对于面试准备至关重要。
122 浏览量
112 浏览量
点击了解资源详情
2008-04-12 上传
2009-11-06 上传
2008-05-24 上传
107 浏览量
2020-03-05 上传
2008-11-06 上传
peng3409
- 粉丝: 12
- 资源: 158
最新资源
- Yugioh:使用HTML 5,CSS 3和Javascript构建的游戏。 一款基于Yugioh的小型游戏(但不是完整版游戏),因为我自己是Yugioh的粉丝
- 毕业设计....zip
- commonmark:面向对象和可扩展的 PHP 5.4+ CommonMark 规范兼容 Markdown 解析器
- MusicPlayer:具有漂亮uiux设计的音乐播放器
- Ethan-A-Programming-Language:编程语言
- ocbase:OC基础
- 全新室内定位系统 针对复杂物流网络的解决方案.zip-综合文档
- Grades_IA:用于组织网格的人工智能系统
- capstone-project-TMGWill:GitHub Classroom创建的capstone-project-TMGWill
- 易语言文件隐藏
- CrazyDaily:[开源项目]一款程序员日常放松的应用程序,基于材料设计+ MVP-Clean + Weex + Flutter + RxJava2 + Retrofit + Dagger2 + Glide + Okhttp + MTRVA + BRVAH +炫酷控件+炫酷动画
- TilemapDemo
- 05.来电显示功能.zip
- PopSkep.3riehiqr9w.gaAFC6j
- 全局鼠标手势模块V2.0-易语言
- 本科毕业设计,基于机器学习的商品评论分析系统.zip