C++笔试精华:静态作用域、引用与指针对比、实时系统特性等详解

需积分: 10 0 下载量 169 浏览量 更新于2024-07-25 收藏 220KB DOC 举报
本文档涵盖了C/C++编程语言的多个重要知识点,包括静态变量和函数的作用、引用与指针的区别、实时系统特性、内存中全局变量和局部变量的存储差异、平衡二叉树的概念、堆栈溢出的原因、虚函数的限制、冒泡排序的时间复杂度、浮点数比较的if语句、Internet协议及其层次结构、物理地址和IP地址的转换机制、IP地址的组成、循环链表的应用以及指针相关的编程问题。 1. **静态变量与函数**: - 在C/C++中,静态变量提供了局部存储的功能,它们在函数内部或模块范围内保持状态。当函数被调用时,静态变量的值不会丢失,仅在首次声明时初始化一次。此外,静态函数只能被模块内部的其他函数调用,具有局部作用域。 2. **引用与指针的区别**: - 引用必须在创建时立即绑定到一个对象,且一旦绑定就不可更改;而指针可以被赋空或重新绑定到另一个对象。 - 指针可以表示空值(NULL),而引用始终关联一个对象,不允许为空。 3. **实时系统特性**: 实时系统强调在预定义的时间内完成任务,并具备高度可靠性。这类系统对响应时间和任务执行的确定性有严格要求。 4. **全局与局部变量**: - 全局变量存储在静态存储区,生命周期贯穿整个程序,而局部变量存放在栈上,仅在函数调用期间存在。 5. **平衡二叉树**: 它是一种特殊的二叉搜索树,每个节点的左子树和右子树的高度差不超过1,保证了查找、插入和删除操作的高效性。 6. **堆栈溢出**: 通常由于递归调用过深或者函数调用栈空间不足,当新的函数调用无法找到足够的空间存储局部变量时,会发生堆栈溢出。 7. **虚函数**: 构造函数不能被声明为虚函数,因为构造函数的调用在编译时就已经确定,动态多态性不适合于此。 8. **冒泡排序**: 冒泡排序算法的时间复杂度是O(n^2),通过重复遍历数组,每次比较相邻元素并交换,逐步将最大或最小元素"冒泡"到正确位置。 9. **浮点数比较**: 代码展示了如何用if语句检查浮点数x是否接近0,使用的是一个宽松的判断条件`x>0.000001&&x<-0.000001`。 10. **网络通信**: - Internet采用TCP/IP协议,主要层次结构包括应用层、传输层、网络层、数据链路层和物理层。 - 物理地址和IP地址的转换由地址解析协议(ARP)负责。 11. **IP地址与子网掩码**: - IP地址由网络号和主机号组成,通过子网掩码进行划分,区分网络和主机部分。 12. **循环链表编程**: 题目要求编写一个C程序,利用循环链表和取余运算实现特定的数列输出功能。 13. **指针编程挑战**: 上海华为的题目要求设计一个函数,通过指针操作将数组中的0移动到后面,非0整数移动到前面,并保持有序,同时考虑效率和异常处理。 这些知识点覆盖了C/C++的基础语法、数据结构、内存管理、网络通信和算法设计等核心领域,对于准备C/C++笔试的考生来说是极有价值的复习材料。