"这是一份C语言面试题集锦,涵盖了C语言的基础知识、编程技巧、数据结构以及网络协议等方面的问题。题目旨在测试面试者对C语言的理解、编程能力和问题解决能力。"
1. `static` 关键字的用途:
- 限制变量的作用域:在函数内部使用`static`声明的变量,其作用域仅限于该函数,而不是像普通局部变量那样在退出函数后被销毁。
- 设置变量的存储域:`static`变量在程序运行期间只会被初始化一次,即具有静态存储期,即使函数调用结束,它的值也会被保留。
2. 引用与指针的区别:
- 引用必须在声明时初始化,而指针可以在任何时候被赋值。
- 引用一旦初始化后就不能改变,它总是引用同一个对象;指针可以改变所指的对象。
- 不存在空引用,但有空指针(NULL)。
3. 实时系统的基本特性:实时系统需要在特定时间内完成特定任务,强调实时性和可靠性。
4. 全局变量和局部变量的内存区别:
- 全局变量存储在静态存储区,程序运行期间一直存在。
- 局部变量存储在栈上,随着函数调用的结束而被销毁。
5. 平衡二叉树的定义:平衡二叉树是一种特殊的二叉树,左右子树都是平衡二叉树,且左右子树的高度差不超过1。
6. 堆栈溢出原因:通常由于动态分配的内存没有得到正确释放,导致内存耗尽。
7. 虚函数的限制:构造函数不能声明为虚函数。
8. 冒泡排序的时间复杂度:O(n^2),效率较低。
9. float x 与零值比较的 if 语句:`if(x > 0.000001 && x < -0.000001)`,考虑到浮点数精度问题。
10. Internet 使用的网络协议:TCP/IP协议,包括应用层、传输层、网络层、数据链路层和物理层。
11. IP 地址与物理地址转换协议:ARP (Address Resolution Protocol)。
12. IP 地址的组成:IP地址由网络号和主机号两部分组成,通过子网掩码区分。
13. switch 语句的限制:switch的参数不能是浮点型。
14. 局部变量与全局变量重名处理:局部变量会屏蔽全局变量,若要访问全局变量,需使用作用域解析运算符`::`。
15. 引用全局变量:通过`extern`关键字或者包含头文件来引用已定义的全局变量。
此外,面试题集锦还涉及了循环链表的编程题目以及用户输入M、N值后的顺序循环计数问题,这些都是C语言编程中的常见题目,考察了面试者的编程实践能力。