C/C++面试精华:变量作用域、引用与指针、数据结构与网络协议

需积分: 0 1 下载量 74 浏览量 更新于2024-07-22 收藏 177KB DOC 举报
"C和C++面试题汇总,包含多种知识点,包括C语言的static用途、引用与指针的区别、实时系统特性、内存管理、数据结构、算法、网络协议等。" 1. `static` 关键字在C语言中有两个主要用途:一是限制变量的作用域,使其仅在定义它的代码块内可见;二是设置变量的存储域,使得变量的生命周期贯穿整个程序运行过程。 2. 引用与指针是C++中的两种指针类型。引用必须在声明时初始化,并且一旦绑定到一个对象后就不能改变,而指针可以改变所指的对象。此外,不存在指向空值的引用,但指针可以为NULL。 3. 实时系统是指能在规定时间内完成特定任务的系统,强调实时性和可靠性。例如,航空控制系统就是实时系统的典型应用。 4. 全局变量存储在静态存储区,程序执行期间一直存在;局部变量在函数调用时分配空间,在函数结束时自动释放,存储在栈中。 5. 平衡二叉树是一种特殊的数据结构,其左右子树的高度差不超过1,且左右子树都是平衡二叉树,有利于快速查找和插入操作。 6. 堆栈溢出通常由于动态分配的内存没有被及时释放,导致栈空间耗尽。合理使用内存管理和避免无限递归可以防止这种情况。 7. 虚函数是C++多态性的体现,但构造函数不能声明为虚函数,因为构造函数不参与继承层次的调用。 8. 冒泡排序的时间复杂度为O(n^2),是一种效率较低的排序算法。 9. 比较浮点数x是否接近零值的if语句可以写为:`if(x > 0.000001 && x < -0.000001)`,这考虑了浮点数的精度问题。 10. Internet采用TCP/IP协议栈,其主要层次结构包括应用层、传输层、网络层、数据链路层和物理层。 11. ARP(地址解析协议)用于将IP地址转换成物理地址,实现IP层和数据链路层之间的通信。 12. IP地址由网络号和主机号两部分组成,通过与子网掩码进行按位与操作确定网络和主机部分。 13. 用户输入M和N,从1到N顺序循环计数,每数到M就输出该数值的C程序可以利用取余运算实现。 14. switch语句的参数不能是浮点型,只能是整型或枚举类型。 15. 局部变量可以与全局变量同名,局部变量会遮蔽全局变量。若要访问全局变量,需要使用作用域解析运算符`::`。 16. 引用全局变量通常通过在当前作用域中使用`extern`关键字来声明,或者包含包含该全局变量声明的头文件。 这些面试题涵盖了C和C++的基础语法、数据结构、算法、内存管理、网络协议等多个方面,是准备C/C++面试的重要参考资料。