华为笔试题:C/C++核心知识点解析

需积分: 3 4 下载量 150 浏览量 更新于2024-07-28 1 收藏 252KB DOC 举报
"华为C/C++笔试题大全包含了一些常见的编程和计算机科学概念,主要针对华为公司的面试或笔试。题目涵盖了static变量的用途、引用与指针的区别、实时系统的基本特性、全局变量与局部变量的内存区别、平衡二叉树的定义、堆栈溢出的原因、虚函数的应用、冒泡排序的时间复杂度、浮点数与零值的比较、TCP/IP协议的层次结构、IP地址的组成、物理地址与IP地址的转换协议、IP地址的网络与主机位划分、循环数数的C程序实现、switch语句的参数限制以及涉及数组处理的编程题。" 本文将详细介绍这些知识点: 1. **static变量**:static有三个用途:(1)在函数内部,static变量的值在函数调用之间保持不变;(2)在函数外部,static变量限制了其作用域,使其只能在声明它的文件内访问;(3)在类中,static成员变量属于类而不属于任何实例,所有对象共享同一份数据。 2. **引用与指针**:引用不同于指针,主要区别在于:(1)引用必须在声明时初始化,而指针可以在任何时候被赋值;(2)引用一旦初始化后就不能改变,指向的对象不能更改,而指针可以改变所指的对象;(3)不存在空引用,但指针可以是NULL。 3. **实时系统**:实时系统必须在规定的时间内完成特定任务,具有实时性和可靠性。它们对响应时间和确定性有严格要求。 4. **全局变量与局部变量**:全局变量存储在静态存储区,程序运行期间一直存在,而局部变量存储在栈中,随着函数调用结束而释放。 5. **平衡二叉树**:平衡二叉树是一种特殊类型的二叉树,每个节点的左子树和右子树都是平衡二叉树,且两者的高度差不超过1。 6. **堆栈溢出**:通常由于递归过深或分配的栈空间不足以存放局部变量导致,没有及时回收内存资源。 7. **虚函数**:构造函数不能声明为虚函数,因为虚函数是在对象创建后才起作用,而构造函数在对象创建时执行。 8. **冒泡排序**:冒泡排序的时间复杂度是O(n^2),适用于小规模数据排序。 9. **浮点数与零值比较**:在C语言中,可以使用if(x>0.000001&&x<-0.000001)来近似判断x是否接近于零,考虑到浮点数的精度问题。 10. **TCP/IP协议**:Internet使用TCP/IP协议,其主要层次结构包括应用层、传输层、网络层、数据链路层和物理层。 11. **ARP协议**:用于将IP地址转换为物理地址,即MAC地址。 12. **IP地址**:IP地址由网络号和主机号组成,通过子网掩码来区分这两部分。 13. **循环数数C程序**:使用循环和取余运算实现从1到N的数数,每数到M就输出该数值。 14. **switch语句**:switch的参数不能是浮点型,因为浮点数的比较不是精确的。 15. **编程题**:给定一个整数数组A,要求将0移到数组后面,非0整数移到前面并保持有序,返回第一个0的下标。这道题可以通过双指针法解决,一个指针从头开始查找非0元素,另一个指针从尾部开始查找0,然后交换它们找到的元素,直到两个指针相遇。