持续更新版本 嵌入式工程师常见面试题( 七 )


总之,()运算符和内存对齐是C语言中重要的概念,需要熟悉和掌握它们的使用方法和注意事项,以便更好地管理内存和提高程序的性能和效率 。
推荐博客地址:
15、const * char 与const char *
"const * char" 和 "const char *" 都是C语言中的指针声明,但它们有一些不同之处 。
"const * char":
"const char *":
总结来说,"const * char"表示一个指向常量字符的指针,而"const char *"表示一个指向字符常量的指针 。在C语言中,对于字符串字面值或字符常量,通常使用"const char *"来声明指针 。
16、函数
是一个C/C++中的关键字,用于告诉编译器该函数的实现应该在编译时进行内联 。内联函数的目的是为了减少程序的运行时开销,通过在编译时将函数的调用替换为函数的实现,避免了函数调用的额外开销,提高了程序的执行效率 。
17、内存四区,什么变量分别存储在什么区域,堆上还是栈上 。
在执行一个C/C++语言程序时,会将程序分配到的内存分为四个区域:栈区、堆区、全局区(静态区)和代码区 。每个程序都有唯一的四个内存区域,我们需要熟悉和了解各个区域的特性,例如存储什么类型的数据,有谁去申请开辟,又有谁去管理释放 。
需要注意的是,这四个区域是按照顺序依次排列的,并且每个区域的存储数据类型和申请方式都有所不同,需要根据具体情况进行管理和使用 。
第三章 :网络编程
1 、TCP、UDP的区别
TCP(传输控制协议)和UDP(用户数据报协议)是两种常见的网络传输协议,它们有以下区别:
连接:TCP是面向连接的协议,而UDP是无连接的协议 。在发送数据前,TCP通过三次握手建立连接,而UDP不需要建立连接 。可靠性:TCP提供可靠的数据传输,保证了数据的可靠性和完整性 。TCP通过序号、确认应答和超时重传等机制来实现可靠性 。而UDP不提供可靠性保证,数据可能丢失、损坏或重复 。传输速度:UDP比TCP快,因为它不需要建立连接和提供可靠性保障 。在一些场景中,如视频、音频等实时应用,UDP更适合 。数据量限制:UDP的数据包大小通常受限于底层网络协议(如以太网),一般不超过1472字节 。而TCP的数据包大小则取决于操作系统和底层网络协议 。应用场景:TCP适用于可靠性要求高的应用场景,如网页浏览、电子邮件等 。UDP适用于对速度和实时性要求高的应用场景,如在线游戏、视频流等 。头部开销:TCP的首部较大,为20个字节,而UDP的首部较小,为4个字节 。
总的来说,TCP提供了可靠的连接和数据传输,但相对较慢;而UDP快,但数据传输不可靠 。在选择传输协议时,需要根据具体的应用场景来权衡 。
2、TCP、UDP的优缺点
TCP和UDP都有各自的优缺点,以下是它们的比较:
TCP的优点:
可靠:TCP提供了可靠的连接,保证了数据的可靠性和完整性,适用于对数据准确性要求高的场景 。高速:TCP的传输速度相对较快,尤其是在底层网络支持的情况下 。适应性:TCP的协议规范和实现独立于底层网络协议,可以适应不同的网络环境 。多路复用:TCP通过连接机制实现了多路复用,可以同时处理多个数据流,提高了传输效率 。
TCP的缺点:
连接管理:TCP需要建立连接和断开连接的过程,这可能会导致一定的开销和延迟 。数据顺序:TCP在传输过程中需要维护数据顺序,如果某个数据包丢失或乱序,需要重新发送,这可能会影响传输速度 。数据量限制:TCP的数据包大小受限于底层网络协议,如以太网的最大传输单元(MTU),超过该限制可能导致数据被分割为多个小包传输 。流量控制:TCP的传输速率受限于底层网络协议的带宽,如果发送速率过快,可能导致数据包丢失或传输受阻 。