华为C++笔试重点:静态变量、引用与指针、实时系统特性

需积分: 9 1 下载量 24 浏览量 更新于2024-09-18 收藏 90KB DOC 举报
"本文涵盖了华为C++笔试题中的关键知识点,包括static的作用、引用与指针的区别、实时系统特性、内存中的变量存储、平衡二叉树概念、堆栈溢出原因、虚函数的限制、冒泡排序时间复杂度、浮点数比较、网络协议TCP/IP及其层次结构、IP地址与物理地址转换协议ARP、IP地址结构、循环计数程序设计以及switch语句的参数限制。" 1. `static`关键字的用途: - 在函数内部,static变量使得变量的值在函数多次调用间保持不变,即具有持久性。 - 在模块级别,static修饰的变量仅对本模块可见,提供了一种封装机制。 - 对于函数,static可以限制其作用域,使其成为内部函数,只在声明它的模块内可用。 2. 引用与指针的区别: - 引用必须在声明时初始化,而指针可以在任何时候被赋值。 - 引用一旦初始化后,不能改变引用的对象,而指针可以改变所指向的地址。 - 不存在空引用,但指针可以为NULL,表示不指向任何对象。 3. 实时系统的基本特性: - 实时性:系统必须在规定的时间内完成任务,否则可能导致错误或失败。 - 可靠性:系统应能持续稳定地执行任务,确保关键操作的正确完成。 4. 全局变量和局部变量的内存区别: - 全局变量存储在静态存储区,生命周期贯穿整个程序运行期间。 - 局部变量存储在栈上,随着所在函数的调用和结束,其生命周期随之变化。 5. 平衡二叉树的定义: - 平衡二叉树是一种特殊的二叉树,其左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。 6. 堆栈溢出的原因: - 主要是由于分配给栈的内存空间不足,当分配的局部变量过多或递归过深时,可能导致堆栈溢出。 7. 不能声明为虚函数的函数: - 构造函数不能声明为虚函数,因为虚函数是在对象实例化后确定行为的,而构造过程在对象创建时进行。 8. 冒泡排序的时间复杂度: - 最坏情况下,冒泡排序的时间复杂度为O(n^2),其中n是待排序元素的数量。 9. 浮点数x与零值比较的if语句: - if(x > 0.000001 && x < -0.000001) 这样的条件用于判断x是否接近于零,但不等于零。 10. Internet采用的网络协议及层次结构: - TCP/IP协议是Internet的基础协议。 - 主要层次结构为:应用层、传输层、网络层、数据链路层和物理层。 11. IP地址与物理地址转换协议: - ARP (Address Resolution Protocol) 负责将IP地址转换为物理地址(MAC地址)。 12. IP地址编码的两部分: - IP地址由网络号和主机号组成,通过子网掩码确定这两部分。 13. 循环计数程序设计: - 使用循环链表和取余运算,可以实现从1到N的顺序计数,每数到M就输出该数值。 14. switch()的参数限制: - switch语句的参数不能是浮点型,只能是整型、字符型或者枚举类型。