C语言面试必备知识点大全

需积分: 10 6 下载量 46 浏览量 更新于2024-10-09 收藏 133KB PDF 举报
"这是一份关于C语言面试题的电子书集合,包含了多个方面的知识点,旨在帮助面试者准备C语言的面试。" 1. **static的用途**: - 限制变量的作用域:static关键字可以使变量仅在定义它的源文件中可见,避免其他文件通过extern访问,提供了一种封装机制。 - 设置存储域:static变量存储在静态存储区,不会在每次函数调用时重新分配,因此其值在函数调用之间得以保留。 2. **引用与指针的区别**: - 引用必须在声明时初始化,而指针可以在任何时候被赋值。 - 引用一旦初始化后就不能改变,它总是引用同一个对象。而指针可以改变所指向的对象。 - 没有空引用的概念,但指针可以指向NULL。 3. **实时系统的基本特性**: 实时系统强调在规定的时间内完成特定任务,同时要求高度的可靠性和确定性。 4. **全局变量与局部变量的内存区别**: 全局变量存储在静态存储区,程序运行期间始终存在。局部变量则存储在栈中,随着函数调用和结束,它们的生命周期相应地创建和销毁。 5. **平衡二叉树**: 平衡二叉树是一种特殊的二叉树,每个节点的左子树和右子树都是平衡二叉树,且两者的深度之差不超过1。 6. **堆栈溢出的原因**: 堆栈溢出通常是因为递归过深、局部变量占用空间过大或动态分配的内存未被正确释放导致的。 7. **虚函数**: 构造函数不能被声明为虚函数,因为虚函数是在对象实例化后进行多态调用的,而构造函数是在对象创建过程中执行。 8. **冒泡排序的时间复杂度**: 冒泡排序的时间复杂度为O(n^2),效率相对较低。 9. **浮点数与零值比较**: 在比较浮点数x是否接近零时,通常使用一个较小的阈值,如`if(x > 0.000001 && x < -0.000001)`来避免浮点误差。 10. **Internet的网络协议**: Internet主要采用TCP/IP协议族,层次结构包括应用层、传输层、网络层、数据链路层和物理层。 11. **IP地址与物理地址转换**: ARP(地址解析协议)用于将IP地址转换为物理地址,即MAC地址。 12. **IP地址的组成**: IP地址由网络号和主机号两部分构成,通过子网掩码确定网络位和主机位。 13. **不能作为switch参数的类型**: switch语句的参数不能是浮点型(实型),只能是整型、字符型或者枚举类型。 14. **C程序示例**: 用户输入M和N,从1到N顺序循环计数,每数到M就输出该数值,直到所有数字都被输出。可以使用循环和取余操作实现。 15. **局部变量与全局变量重名**: 局部变量可以与全局变量同名,但在函数内部,局部变量会遮蔽全局变量。如果需要使用全局变量,可以使用作用域解析运算符`::`来显式引用。 这些面试题覆盖了C语言的基础语法、数据结构、算法、操作系统概念以及网络协议等多方面,对准备C语言面试非常有帮助。