- (꒪ꇴ꒪ ),Hello我是祐言QAQ
- 我的博客主页:C/C++语言,数据结构,Linux基础,ARM开发板,网络编程等领域UP🌍
- 快上🚘,一起学习,让我们成为一个强大的攻城狮!
- 送给自己和读者的一句鸡汤🤔:集中起来的意志可以击穿顽石!
- 作者水平很有限,如果发现错误,请在评论区指正,感谢🙏
先提问题,看看你能否全部回答的上
c关键字有哪些?
栈和堆的区别?
线程同步方式?
进程通信方式?
介绍一下大端小端?
tcp ip有几层,各层常见协议有哪些?
介绍一下段和页?
介绍一下io多路复用?
写一个指针数组和数组指针?
以下是您提出的问题的答案:
-
C关键字有哪些:auto、break、case、char、const、continue、default、do、double、else、enum、extern、float、for、goto、if、int、long、register、return、short、signed、sizeof、static、struct、switch、typedef、union、unsigned、void、volatile、while等。
-
栈和堆的区别:
- 栈(Stack):栈是一种线性数据结构,用于存储函数的局部变量、函数调用信息以及返回地址等。它的特点是后进先出(LIFO),内存管理由编译器自动处理,通常用于存储局部变量和函数调用。
- 堆(Heap):堆是一种动态分配内存的区域,由程序员手动分配和释放。它的特点是随机访问,内存管理需要程序员负责,通常用于存储动态分配的数据,如对象、数组等。
-
线程同步方式:
- 互斥锁(单线程访问):用于保护共享资源,一次只允许一个线程访问。
- 信号量:控制同时访问共享资源的线程数量。
- 条件变量(等待机制):允许线程等待特定条件的发生。
- 读写锁(多线程读单线程写):允许多个线程同时读取共享资源,但只允许一个线程写入。
-
进程通信方式:
- 管道(Pipe):单向通信,通常用于父子进程间通信。
- 命名管道(Named Pipe,FIFO):有名管道,允许无关进程间通信。
- 共享内存(Shared Memory):多个进程共享同一块内存区域。
- 信号(Signal):用于进程间通知和处理异步事件。
- 消息队列(Message Queue):进程通过消息队列传递数据。
- 套接字(Socket):用于网络通信和进程间通信。
-
大端小端: 大端(高存低)和小端(低存低)是两种存储多字节数据的方式。在大端模式中,最高有效字节存储在最低内存地址,而在小端模式中,最低有效字节存储在最低内存地址。这种区别在网络通信和数据存储时很重要。
-
TCP/IP有几层,各层常见协议有哪些: TCP/IP协议栈通常分为四层:
- 应用层:HTTP、SMTP、FTP、SSH等。
- 传输层:TCP、UDP。
- 网络层:IP、ICMP、ARP。
- 网络接口与物理层(链路层):以太网、PPP。
-
段和页:
- 段(Segment):段式存储管理将内存划分为若干段,每个段具有不同的属性和大小。段的大小可以动态变化。
- 页(Page):页式存储管理将内存划分为固定大小的页,通常为4KB。内存和磁盘也被划分为相同大小的页,以便进行页面交换。
-
I/O多路复用: I/O多路复用是一种并发编程技术,允许一个进程可以同时监听多个文件描述符(套接字、文件等)的可读或可写状态,从而实现高效的事件驱动编程。在C语言中,常见的I/O多路复用函数包括
select
、poll
和epoll
等。 -
写一个指针数组和数组指针: 指针数组(Array of Pointers)是一个数组,其元素是指向其他数据的指针。数组指针(Pointer to an Array)是一个指向数组的指针。
示例:
// 指针数组,包含三个指向整数的指针 int* ptrArray[3]; // 数组指针,指向包含三个整数的数组 int (*arrPointer)[3];
更多C/C++语言、Linux系统、数据结构和ARM板实战相关文章,关注专栏:
手撕C语言
玩转linux
脚踢数据结构
系统、网络编程
探索C++
6818(ARM)开发板实战
📢写在最后
- 今天的分享就到这啦~
- 觉得博主写的还不错的烦劳
一键三连喔
~ - 🎉🎉🎉感谢关注🎉🎉🎉