C/C++面试精华:涵盖静态作用域、内存差异与算法理解

5星 · 超过95%的资源 需积分: 9 5 下载量 124 浏览量 更新于2024-07-29 收藏 177KB DOC 举报
本文档是一份详尽的C与C++面试题汇编,涵盖了80多页的内容,旨在帮助求职者准备面试,强化基础知识。其中,重点讨论了以下几个知识点: 1. C语言中的`static`关键字: - `static`在C语言中有两种常见用途: - 限制变量的作用域:当放在函数内部时,使得变量仅在该函数内部可见,函数调用结束后生命周期结束。 - 设置存储域:在某些特定情况下,如`static int arr[100]`,数组元素在程序整个执行期间保持存在。 2. 引用与指针的区别: - 引用必须在声明时初始化,并且一旦赋值后不能改变引用的目标对象。 - 指针可以在任何时候改变所指的对象,但不强制初始化,可以指向空值。 3. 实时系统特性: - 实时系统强调在特定时间范围内完成预定任务,对时间和可靠性有极高要求。 4. 全局变量与局部变量的内存差异: - 全局变量存储在静态数据区,其生命周期贯穿整个程序;局部变量存储在栈上,随着函数调用的结束而消失。 5. 平衡二叉树定义: - 是一种特殊的二叉搜索树,每个节点的左右子树高度差不超过1,保持了良好的平衡性质。 6. 堆栈溢出的原因: - 当程序递归调用过深或连续创建大量局部变量超出栈空间时,可能导致堆栈溢出,因为栈内存未及时释放。 7. 关于虚函数: - 在C++中,构造函数不能声明为虚函数,因为构造函数的调用不是通过虚函数表间接进行的。 8. 冒泡排序算法的时间复杂度: - 冒泡排序算法的时间复杂度为O(n^2),效率相对较低,适合小规模数据排序。 9. float类型的比较: - 如果需要检查浮点数x与零值的微小差距,可以使用if语句:`if(x > 0.000001 && x < -0.000001)` 10. Internet协议体系结构: - Internet主要采用TCP/IP协议,其层次结构包括应用层、传输层、网络层、数据链路层和物理层。 11. IP地址与物理地址转换: - 物理地址到IP地址的转换由ARP协议处理,IP地址由网络号和主机号组成,通过子网掩码区分。 12. 用户输入循环数数问题的C程序: - 提供了一段代码示例,让用户输入M和N值,实现从1到N的循环数数,遇到M就输出。 13. 关于C语言的一些细节: - 不能作为`switch`语句参数的类型是实型,局部变量可以和全局变量同名,但局部变量优先级更高。 - 引用全局变量需使用`extern`关键字,头文件引用全局变量可能会在编译或链接阶段出现不同类型的错误。 这份面试题汇总为准备C和C++面试者提供了丰富的实战经验和理论知识,有助于深入理解和掌握这两门语言的关键概念。