导图社区 c语言学习思维导图
C语言是一门面向全过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简单的方式编译、处理低级储存器。本图为你详细讲解了C语言的基本要素;编译过程;函数;数组;指针;VM内存;结构体;共用体;枚举;头文件;宏定义;条件编译;链表;文件IO;进程;线程;网络编程。收藏下图学习吧!
编辑于2019-07-08 12:22:09C语言
基本要素
数据类型
int、double、float、char 、long、short
运算符
算术运算:+-*/ % ++ --
关系运算:>,>=,=<,<,==,!=
逻辑运算:&& 、||、!
位运算: ~、&、|、^、>>、<<
控制流
条件语句:if、switch
循环语句:for、while
编译过程
1、预处理
2、编译
3、汇编
4、连接
函数
递归函数
变参函数
回调函数
内联函数
数组
一维数组
数组名和数组其实元素代表数组的地址
二维数组
在一维数组的基础上实现的
赋值
边定义边赋值
定义之后一个一个的赋值
指针
专门存放地址的变量
野指针:定义后没有初始化的指针
数组指针 :(*p)[10]
指针数组:*p[10]
指针的运算: &取地址、 *解引用
const指针:是指针可以访问内存的值但是不能修改其值
VM内存
栈内存
严格按照先进后出的方式
函数调用和局部变量的存储空间
堆内存
是一块自由的内存
malloc 分配连续的内存空间
calloc 申请具有n个元素的匿名数组
realloc 将ptr指向的堆内存大小扩展为size
free 释放堆内存
数据段
.bss段
存放未初始化的静态数据,它们都被初始化成0
.data段
存放已经初始化的静态数据
.rodata段
存放常量
代码段
.text
存放用户程序代码,包括main在内的所有用户自定义函数
.init
用来存储系统给每一个可执行程序自动添加的"初始化"代码
结构体
地址对齐
定义 struct
元素间互不打扰
共用体
定义 union
内部元素共用一块内存
任何时刻只有一个成员有效
枚举
定义 enum spectrum
定义常量
在一定范围内不能超出,超出则没有意义
头文件
1、普通函数声明
2、宏定义
3、结构体、共用体模版定义
4、枚举常量列表
5、static函数和inline函数定义
6、其他头文件
宏定义
不带参数
带参数
条件编译
#ifdef ... #endif
#ifndef .....#endif
#if ........#endif
链表
单向链表
单向循环链表
双向链表
Linux内核链表
文件IO
文件的类别
1、普通文件(regular)
2、目录文件(directory)
3、管道文件(pipe)
4、套接字文件(socket)
5、链接文件(link)
6、字符设备文件(character)
7、块设备文件(block)
文件操作
1、打开:open
2、读:read
3、写:write
4、关闭:close
文件的属性
目录文件操作
1、打开目录:opendir
2、读取目录:readdir
3、创建目录:mkdir
进程
进程状态
就绪态
执行态
睡眠/挂起态
暂停态
僵尸态
死亡态
进程间通信
有名管道
无名管道
信号
消息队列
共享内存
信号量
线程
线程的创建
线程的回收
POSIX信号量
有名信号量
无名信号量
互斥锁
读写锁
条件变量
线程池
网络编程
IO模式
阻塞IO
非阻塞IO
多路复用
监听文件描述符
TCP传输
申请套接字 socket
绑定 bind
监听 listen
响应连接 accept
服务端 connect连接
发送数据 send
接收数据 recv
UDP传输
申请套接字 socket
绑定 bind
发送数据 sendto
接收数据 recvfrom
套接字属性
设置广播
设置超时等待