本文档涵盖了C/C++编程语言的多个重要知识点,旨在帮助准备笔试和面试的考生提高技能。以下是详细内容:
1. **static的作用**:
- 在函数内部,静态变量确保其值在每次函数调用时保持不变,作为局部持久存储。
- 在模块级别,静态变量成为局部全局变量,仅限于模块内可见,外部不可访问,用于控制信息的可见性。
2. **引用与指针的区别**:
- 引用一旦初始化就不能改变,必须指向已存在的对象,而指针可以改变指向的对象或保持为空。
- 指针允许存在空指针,而引用不允许,因为引用始终需要关联一个具体对象。
3. **实时系统特性**:
- 实时系统强调任务在规定的时间内完成,具有高实时性和可靠性,对响应时间和系统稳定性有严格要求。
4. **全局变量与局部变量的内存差异**:
- 全局变量存储在静态数据区,生命周期贯穿整个程序;局部变量存放在栈中,随函数调用结束销毁。
5. **平衡二叉树的定义**:
- 它是一种特殊的二叉搜索树,保证左右子树高度差不超过1,以保持查找性能高效。
6. **堆栈溢出原因**:
- 主要是由于递归调用过深或动态内存分配不当导致,当堆栈空间不足时,程序会崩溃。
7. **虚函数的应用限制**:
- 构造函数不能被声明为虚函数,因为它们在基类和派生类中的行为相同,不需要多态性。
8. **冒泡排序算法的时间复杂度**:
- 冒泡排序是一种简单但效率较低的排序算法,时间复杂度为O(n^2),不适合处理大数据量。
9. **浮点数比较**:
- 使用if语句检查浮点数x是否接近零:`if (x > 0.000001 && x < -0.000001)`,判断非常接近但不等于零的情况。
10. **Internet协议与层次结构**:
- Internet使用TCP/IP协议,其层次结构包括应用层、传输层、网络层、数据链路层和物理层。
11. **地址解析协议(ARP)**:
- ARP用于将IP地址映射到物理地址(MAC地址),实现不同网络之间的通信。
12. **IP地址的组成**:
- IP地址由网络地址和主机地址两部分构成,通过子网掩码区分网络和主机部分。
13. **循环链表与取余操作**:
- 需编写C程序,使用取余操作实现用户输入的M和N范围内的循环计数,输出特定间隔的数字。
14. **指针编程题**:
- 上海华为面试题涉及指针操作,要求在一个整数数组中,将所有0移动到数组末尾,非0元素保持有序,返回第一个0的位置,注意空间效率和异常处理。
这些知识点展示了C/C++编程的基础理论、数据结构、内存管理以及高级特性的运用,对于理解和应对C/C++笔试和面试非常有帮助。