### 最全C和C++语言笔试面试题汇总知识点解析 #### 一、关键字`static`的作用 1. **函数体内**:在函数内部声明为静态的变量,在该函数被调用的过程中保持其值不变,即使函数多次调用,其值也不会丢失。 2. **模块内(函数体外)**:在模块内声明为静态的变量可以被同一模块内的所有函数访问,但不能被其他模块访问。这种变量称为局部全局变量。 3. **函数声明为静态**:在模块内声明为静态的函数只能被本模块内的其他函数调用,这限制了函数的作用域。 #### 二、“引用”与指针的区别 1. **初始化**:引用必须在声明时初始化,而指针可以在任何时候初始化。 2. **可修改性**:一旦初始化后,引用所引用的对象不能改变;指针可以重新指向另一个对象。 3. **空值**:不存在指向空值的引用,但存在指向空值的指针。 4. **间接操作与直接操作**:指针通过指针变量间接操作目标变量;引用则是目标变量的别名,直接操作目标变量。 5. **使用场景**:流操作符(`<<`、`>>`)、赋值操作符(`= `)的返回值、拷贝构造函数的参数、赋值操作符的参数等推荐使用引用。 #### 三、`.h`头文件中的`ifndef/define/endif`的作用 - 防止头文件被重复包含。这些预处理器指令通常用于实现所谓的“头文件保护”,确保头文件只被包含一次,避免因重复定义而引起的编译错误。 #### 四、`#include <file.h>`与`#include "file.h"`的区别 - `#include <file.h>`:从标准库目录或系统目录中搜索文件。 - `#include "file.h"`:首先从当前工作目录开始搜索文件,如果未找到,则从标准库目录或系统目录中继续搜索。 #### 五、实时系统的基本特性 - 实时性:系统能够在规定的时间内响应输入,并完成任务。 - 可靠性:系统能够稳定运行,处理数据和执行任务时不出现故障。 #### 六、全局变量和局部变量的内存区别 - **全局变量**:存储在静态数据区。 - **局部变量**:存储在栈中。 #### 七、什么是平衡二叉树? - 平衡二叉树是一种特殊的二叉树,其中任意节点的左子树和右子树的高度差不超过1。 #### 八、堆栈溢出的原因 - 常见原因包括: - 未释放已分配的内存空间。 - 过深的递归调用。 #### 九、冒泡排序算法的时间复杂度 - 冒泡排序的时间复杂度为O(n^2),其中n为数组长度。 #### 十、什么函数不能声明为虚函数? - 构造函数不能声明为虚函数。 #### 十一、队列和栈的区别 - **队列**:遵循先进先出(FIFO)原则。 - **栈**:遵循后进先出(LIFO)原则。 #### 十二、不能作为`switch()`的参数类型 - `switch`语句的参数不能为实型数据类型(例如float、double)。 #### 十三、局部变量能否和全局变量重名? - 局部变量可以与全局变量同名。在函数内部,局部变量会覆盖全局变量,如果需要使用全局变量,可以使用作用域解析运算符`::`。 #### 十四、如何引用一个已经定义过的全局变量? - 可以通过引用头文件或使用`extern`关键字。引用头文件时,如果变量名称拼写错误,编译时会报错;使用`extern`关键字时,即使拼写错误,编译时也不会报错,但链接时会报错。 #### 十五、全局变量是否可以定义在可被多个`.C`文件包含的头文件中? - 可以,但需要在每个`.C`文件中以`static`形式声明同名的全局变量,以确保它们只在各自的文件中可见。这样可以避免在链接阶段出现重定义错误。 #### 十六、语句`for(;1;)`的意义及其问题 - 表示无限循环,等价于`while(1)`。 #### 十七、`do……while`与`while……do`的区别 - `do……while`先执行循环体至少一次,然后判断条件是否满足;`while……do`先判断条件是否满足,如果满足才执行循环体。 #### 十八、`static`全局变量、局部变量、函数的特点 - **全局变量**:静态全局变量的作用域仅限于定义它的源文件内,而普通全局变量在整个源程序中有效。 - **局部变量**:静态局部变量在整个程序运行期间存在,而普通局部变量只在其作用域内存在。 - **函数**:静态函数仅可在定义它的源文件内调用,而普通函数可以在整个程序中调用。
剩余59页未读,继续阅读
- 粉丝: 8
- 资源: 12
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- java 如何操作gbase8s的clob例子
- python opencv 图像转视频脚本工具
- HPMSM的飞轮储能并网控制simulink仿真 注意:MATLAB R2021b搭建(可转低版本,但是可能会出现器件不全)
- IPD400N06N-G-VB一种N-Channel沟道TO252封装MOS管
- Git 安装与配置全面指南
- Fluent电池包热管理-新能源汽车电池包热管理仿真 模型如何搭建,几何清理网格划分,重要分析参数如何设置,及不同电池包热分析工
- 两级三相光伏并网逆变器控制Matlab Simulink仿真模型,mppt控制有扰动观察法和电导增量法
- 暴风电视电视刷机数据 65X3 屏V650DJ4-QS5 机编60000AM0H00 屏参30172604 V4.0.31版本
- COMSOL裂隙动水注浆扩散数值模 拟针对动水注浆中常用的2种速凝浆液,水泥–水玻璃浆液与高聚物改性水泥浆液,考虑浆液黏度时变
- 利用EDATE函数计算退休日期的方法
- 1
- 2
- 3
- 4
- 5
- 6
前往页