C/C++笔试题详解:涵盖语法、数据结构与编程概念

需积分: 3 3 下载量 166 浏览量 更新于2024-07-30 收藏 563KB DOC 举报
"C/C++笔试题集合,包含多种编程概念和系统知识的考察,适合面试准备" 在C/C++编程领域,理解各种语言特性和数据结构是至关重要的。以下是一些从标题、描述和部分内容中提取的关键知识点: 1. **static的作用**: - 在函数内部,`static`关键字使得变量在函数多次调用中保持其值,而非每次调用都重新初始化。 - 在函数外部,`static`修饰的全局变量成为内部链接的局部全局变量,仅限于当前源文件可见,防止其他文件中的同名冲突。 - `static`也可以用于函数定义,将函数声明为静态函数,限制其作用域在当前源文件内。 2. **引用与指针的区别**: - 引用必须在声明时初始化,一旦绑定就不能改变引用的对象。 - 指针可以不初始化,也可以在运行时改变所指向的对象。 - 没有空引用的概念,而指针可以是NULL,表示不指向任何对象。 3. **实时系统的基本特性**: 实时系统要求在规定的时间内完成任务,强调响应时间和可靠性。如果不能及时处理,可能会导致严重后果。 4. **全局变量与局部变量的内存分配**: 全局变量存储在数据段(静态存储区),生命周期贯穿整个程序执行;局部变量存储在栈中,随着函数调用结束而被销毁。 5. **平衡二叉树**: 平衡二叉树是一种特殊的二叉树,每个节点的两个子树高度差不超过1,并且每个节点的左子树和右子树都是平衡二叉树。 6. **堆栈溢出**: 常由递归过深、栈空间不足或者数组越界等导致,未管理好内存可能导致程序崩溃。 7. **虚函数**: 构造函数不能声明为虚函数,因为虚函数是在对象实例化后通过指针或引用调用,而构造函数在对象创建时执行,不适用此机制。 8. **冒泡排序的时间复杂度**: 冒泡排序的时间复杂度为O(n^2),效率较低,适用于小规模数据排序。 9. **浮点数与零值比较**: 通常用一个较小的正数(如0.000001)来判断浮点数是否接近于零,避免浮点误差问题。 10. **Internet网络协议**: Internet使用TCP/IP协议族,其层次结构包括应用层、传输层、网络层、数据链路层和物理层。 11. **物理地址与IP地址转换**: ARP(地址解析协议)负责将IP地址转换为硬件地址,实现IP网络层和数据链路层之间的通信。 12. **IP地址结构**: IP地址由网络号和主机号两部分组成,通过子网掩码确定网络部分和主机部分。 13. **循环计数程序**: 使用循环和取模运算实现从1到N顺序计数,每数到M就输出该数值,直至N。 14. **switch语句的限制**: switch语句的表达式不能是浮点数,只能是整型、字符型或枚举类型。 15. **sizeof的计算**: 在32位系统中,`sizeof(str)`会返回字符数组str的大小,即100个字符的字节大小(通常每个字符占1字节),但注意,字符串常量的结束符'\0'也会占用一个字节。 以上知识点涵盖了C/C++编程基础、数据结构、操作系统原理以及网络协议等多个方面,对准备C/C++笔试或面试的人来说是非常有价值的参考资料。