C/C++面试必知:static、引用、全局与局部变量解析

需积分: 10 3 下载量 141 浏览量 更新于2024-09-17 收藏 50KB DOC 举报
"C与C++面试题汇总,涵盖了C语言和C++的相关知识点,包括static的用法、引用与指针的区别、实时系统特性、内存管理、数据结构、算法、网络协议等方面。" 1. `static`关键字在C/C++中的作用: - 对于全局变量,使用`static`关键字可以使变量的作用域限制在本文件内,避免了不同文件间的命名冲突。 - 对于局部变量,`static`使得变量的生命周期跨越函数调用,保持其值在每次调用之间不变。 2. 引用与指针的区别: - 引用必须在声明时初始化,并且一旦初始化后,引用就固定指向那个对象,不能改变。 - 指针可以改变其所指的对象,可以为NULL,而引用则不能为NULL。 3. 实时系统的基本特性: - 实时系统需要在规定的时间内完成任务,强调响应时间的确定性和可靠性。 4. 全局变量与局部变量在内存中的区别: - 全局变量存储在静态存储区,程序运行期间一直存在。 - 局部变量存储在栈中,随着函数调用的结束,栈空间会被释放。 5. 平衡二叉树的定义: - 平衡二叉树是一种特殊的二叉树,每个节点的左右子树高度差不超过1,且都是平衡二叉树。 6. 堆栈溢出的原因: - 当程序申请的栈内存超过栈的大小,通常由于递归过深或大量局部变量未释放导致。 7. 不能声明为虚函数的函数: - 构造函数不能声明为虚函数,因为虚函数是在对象实例化后才起作用的,而构造函数在对象创建过程中执行。 8. 冒泡排序的时间复杂度: - 冒泡排序最坏情况下的时间复杂度为O(n^2)。 9. 浮点数与零值比较的if语句: - 使用一个足够小的阈值判断,例如:`if(x > 0.000001 && x < -0.000001)`。 10. Internet使用的网络协议及层次结构: - TCP/IP协议栈,主要包括应用层、传输层、网络层、数据链路层和物理层。 11. IP地址与物理地址的转换协议: - ARP(Address Resolution Protocol)地址解析协议用于将IP地址映射为物理地址。 12. IP地址的组成部分: - IP地址由网络号和主机号组成,通过子网掩码确定网络部分和主机部分。 13. C程序实现顺序循环数数: - 可以使用循环和取余运算实现,根据M和N的值输出特定数值。 14. switch()不支持的参数类型: - switch语句的表达式不能是浮点数。 15. 局部变量与全局变量的重名: - 在函数内部,局部变量会遮蔽同名的全局变量,可以通过`::`操作符显式访问全局变量。 16. 引用全局变量的方法: - 使用`extern`关键字在需要的地方重新声明全局变量。 这些面试题涵盖了C/C++编程、数据结构、算法、操作系统、计算机网络等多个领域,是程序员面试中常见的问题。理解和掌握这些问题有助于提升编程技能和解决实际问题的能力。