C++面试精华:判断零值与内存占用详解
需积分: 14 5 浏览量
更新于2024-09-09
收藏 74KB DOC 举报
在C++面试中,面试官可能会考察候选人的基础语法和理解能力,特别是对于数据类型、比较运算、内存管理和字符数组的操作。以下是一些常见的面试题及其解答,涉及了 bool、int、float、指针以及 sizeof 运算符的使用。
1. 对于bool、int、float和指针与“零值”的比较:
- bool类型的变量a可以直接进行真假判断,例如`if(a)`
- int类型的变量b需要与0进行精确的相等判断,避免赋值错误,如`if(0==b)`
- float类型的变量c由于浮点精度问题,通常比较其是否在一个极小的范围内,如`if(c >= -0.0001 && c <= +0.0001)`
- 指针d使用NULL(而非0)进行空指针检查,因为NULL表示特定的“空”状态,如`if(NULL == d)`
2. sizeof运算符的使用:
- `sizeof('A'+false)`,字符'A'的ASCII值加上布尔值false(视为0)后,结果是字符'A'的ASCII值(65),因此sizeof结果为1。
- `sizeof(1+1.0)`,1和1.0相加,即使结果为整数2,但 sizeof 还是根据类型计算,1是int,1.0是double,总和为double,所以结果是8(32位系统下)。
- `sizeof(sizeof(double))`,两次sizeof都是计算double类型的大小,通常是8(32位系统),所以最终结果也是8。
- `sizeof(short x[])`,数组x的第一个元素的sizeof是取决于元素类型,short是2(假设是32位系统),如`sizeof(x[0])`结果为2。
- `sizeof(x)`是整个数组x的大小,因为数组的大小是元素个数乘以元素类型大小,这里为5 * sizeof(short),结果为10。
- `sizeof(short y[8])`与`sizeof(x)`类似,为32(8 * sizeof(short))。
- `sizeof(short* z = y + 2)`,z是一个指向short的指针,所以sizeof(z)是4(4字节的指针)。
- `sizeof(char* q = (char*)malloc(sizeof(double)))`,q是一个指向char的指针,malloc分配的是double的大小(8字节),但sizeof(q)仍然是4(因为是4字节指针)。
- `sizeof("Hello")`是字符串常量的大小,包括null终止符,通常是固定的,例如5(在C++中,每个字符占1个字节)。
- `sizeof("Hello"[2])`,访问字符串中的某个字符,实质上还是字符大小,即1。
- `sizeof(s)`,如果s是字符数组或指针,取决于具体定义,如果是指针则为4字节。
- `sizeof(*s)`,指针s所指向的元素的大小,如果是字符,则为1。
- `sizeof(p)`,如`s`,取决于p是否是实际的指针,如果是则为4字节。
- `sizeof(q)`,如`s`,如果q是char*指针,结果为4字节。
- `sizeof(*q)`,与`sizeof(*s)`相同,q指向的元素大小,通常是1字节。
这些题目展示了面试者对C++基本概念的理解,包括数据类型、运算符、内存分配和数组/指针的性质。在面试时,候选人不仅要正确写出代码,还要解释他们的思考过程和选择的理由。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2010-08-23 上传
2010-06-26 上传
2021-04-01 上传
2010-12-27 上传
2009-03-14 上传
2009-08-19 上传
qq_41751161
- 粉丝: 0
- 资源: 1
最新资源
- MATLAB有限元工具箱calfem3.6
- TrainTicket12306:通过node.js从12306网站查询Tickects和其他信息
- Udemy:乌迪米的课程
- textnote:用于在命令行上创建和组织日常笔记的简单工具
- hello-world:只是一些用Python制作的随机项目
- DoubleCheck:Sponge 插件的动作确认库
- kproject a kde project management tool-开源
- pikachu+dvwa+sqli.zip
- TransferWise:TransferWise
- eleventy-plugin-images-responsiver:eleventy-plugin-images-responder是Eleventy满足大多数响应图像需求的简单解决方案
- sdk-rust:用于Rust的Tanker客户端加密SDK
- built.io-android-tutorial-built-query-listview:演示如何使用 BuiltUIListViewController 的示例应用
- Orangex-Mobile:使用termux进行移动编码的有用工具链
- YershegeYerkenaz-labworks
- phpMediaLibrary
- squarespace-core