【C和C++面试知识点详解】 一、基本类型与零值比较 在C++/C中,比较不同类型的变量与零值通常涉及到等价性和非等价性的判断。以下是题目中给出的例子: 1. `BOOL flag` 与“零值”比较: - `if (flag)` 相当于 `if (flag == TRUE)` - `if (!flag)` 相当于 `if (flag == FALSE)` 2. `float x` 与“零值”比较: - 使用一个小的正浮点数(如 `const float TEMP = 0.000001`)来判断接近零的值,因为直接使用 `x == 0.0` 可能由于浮点数精度问题而产生误判。 - `if (x > -TEMP && x < TEMP)` 判断 `x` 是否在零附近 - `if (!(x > -TEMP && x < TEMP))` 判断 `x` 是否不处于零附近 3. `char *p` 与“零值”(空指针)比较: - `if (NULL == p)` 判断指针是否为空 - `if (NULL != p)` 判断指针是否不为空 二、sizeof运算符的使用 `sizeof` 是C++/C中的一个运算符,用于计算类型或变量所占的内存大小。根据题目中的例子: 1. `sizeof (str)` 在字符串常量数组情况下,会计算字符数组的大小,包括终止符 '\0',所以 `sizeof (str) = 6` 2. `sizeof (p)` 计算指针变量本身的大小,通常为4字节(32位系统)或8字节(64位系统),题目中给出 `sizeof (p) = 4` 3. `sizeof (n)` 对于整型变量 `int n`,其大小通常是4字节,所以 `sizeof (n) = 4` 4. 其他类型的大小如 `sizeof (int)`、`sizeof (unsigned)`、`sizeof (float)`、`sizeof (double)` 都是固定的,题目中给出了相应的值。 三、简答题 1. 头文件中的 `ifndef/define/endif` 用于宏保护,防止头文件被多次包含导致重复定义的问题。 2. `#include <filename.h>` 从系统头文件路径查找,`#include "filename.h"` 从当前目录开始查找,找不到时再找系统头文件路径。 3. `const` 有多种用途: - 声明常量,防止意外修改。 - 作为函数参数,表示参数在函数内部不会被修改,提示编译器进行优化。 - 用于指针,使指针本身不可变,但不影响指针所指向的值。 4. `extern "C"` 用于C++代码中调用C语言编译的函数,保持函数名不进行名称修饰,以便正确链接。 5. 两个for循环的优缺点: - 第一个循环将条件判断放在循环内部,优点是简洁,但每次迭代都会进行条件检查,可能导致效率略低。 - 第二个循环将条件判断放在循环外部,优点是执行效率较高,但代码稍显复杂,逻辑不易理解。 四、内存管理相关 1. 在 `Test` 函数中,`GetMemory` 传递的是 `str` 的副本,对 `p` 的修改不会影响到 `str`,因此 `str == NULL`,调用 `strcpy` 会导致程序崩溃。 2. `GetMemory` 返回栈内地址是不安全的,因为栈上的内存会在函数返回后自动释放。在 `Test` 函数中,`GetMemory2` 返回的 `p` 指向动态分配的内存,但 `str` 没有初始化,可能导致未定义行为。 总结,这些面试题考察了C++/C的基础知识,包括基本类型比较、内存管理、头文件包含、常量使用以及效率考虑等多个方面。掌握这些知识点对于理解和编写高质量的C++/C代码至关重要。
剩余14页未读,继续阅读
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- AllSort(直接插入排序,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序)
- 模拟qsort,改造冒泡排序使其能排序任意数据类型,即日常练习
- 数组经典习题之顺序排序和二分查找和冒泡排序
- 基于 Oops Framework 提供的游戏项目开发模板,项目中提供了最新版本 Cocos Creator 3.x 插件与游戏资源初始化通用逻辑
- live-ai这是一个深度学习的资料
- FeiQ.rar 局域网内通信服务软件
- 172.16.100.195
- 光储并网simulink仿真模型,直流微电网 光伏系统采用扰动观察法是实现mppt控制,储能可由单独蓄电池构成,也可由蓄电池和超级电容构成的混合储能系统,并采用lpf进行功率分配 并网采用pq控制
- python编写微信读取smart200plc的数据发送给微信联系人
- 光储并网VSG系统Matlab simulink仿真模型,附参考文献 系统前级直流部分包括光伏阵列、变器、储能系统和双向dcdc变器,后级交流子系统包括逆变器LC滤波器,交流负载 光储并网VSG系