进一步步入嵌入式,经过两周的Linux与C高级的学习,在此进行对Linux与C高级学习的大致的整体汇总,主要掌握了以下的知识点。
目录
一、前提基础
1.gcc编译流程
预处理
编译
汇编
链接
2.指针传参
--》一级指针传参,二级指针传参,普通变量传参
--》看是否需要在子函数内部引起实参本身发生改变
3.main函数传参
- main函数无参 int main() int main(void)
- main函数带参 int main(int argc,const char * argv[])
4.二维数组图解
二维数组与指针应用
二、LinuxC
内容:理解Linux系统 C高级(函数和指针的结合,动态内存管理,结构体,共用体,大小端,多文件编译,Make工程管理,递归函数,回调函数,枚举,GDB调试工具)
1.指针函数
- 概念
2.函数指针
2-1:函数指针的概念
- 概念
- 思考:如何定义一个指向整型的指针,如何定义一个指向一维数组的指针
2-2:函数指针的定义格式
- 定义函数指针的方式:返回值类型 (*pFunc)(形参列表)
2-3:关键字typedef取别名的用法
- typedef 类型名 新类型名;
- 针对函数指针类型取别名的写法:返回值类型 (*新类型名)(形参列表)
2-4:函数指针数组的定义
- 函数指针类型 数组名[元素个数]
2-5:回调函数
概念
3.动态内存管理
申请空间:malloc calloc
释放空间:free
初始化空间:memset
扩容空间:realloc
头文件:#include <stdlib.h>
函数原型
3-1:申请空间
void *malloc(size_t size)
void *calloc(size_t nmemb,size_t size)
!calloc在申请完空间之后,会自动将申请的连续空间初始化为'\0'
3-2:释放空间
void free(void *ptr)
3-3:扩容空间
void *realloc(void *ptr,size_t size);
!扩容之后的空间首地址可能和之前的地址一样,也可不一样!
#include<string.h>
3-4:重置空间
void *memset(void *s,int c,size_t n)
清空空间居多
4.结构体
4-1:如何构造一个结构体类型
4-2:如何定义结构体变量
4-3:如何给结构体成员进行赋值
4-4:如何访问结构体中的成员
4-5:结构体的字节对齐
概念
考虑范围
32OS与64OS开辟空间
5.共用体
概念
注意:共用体的成员共用同一片空间
6.枚举
概念
定义
7.大小端(字节序)
概念
大端存储:低字节处的内容存储在高地址处,高字节处的内容存储在低地址处
小端存储:低字节处的内容存储在低地址处,高字节处的内容存储在高地址处。
8.调试BUG的方式
1.printf打印
2.gdb调试工具
9.对于段错误的理解
1.数组越界
2.操作空指针或者野指针
3.修改常量区内容
10.递归函数
概念
三要素:1.从哪里开始? 2.从哪里结束? 3.每一步干什么?
11.头文件的书写
格式
12.Make
概念
使用
12-1:Make中的一些变量
用户自定义变量:变量名:=值
自动变量: $<:依赖中的第一个依赖 $^:所有依赖 $@:目标名
系统预定义变量:CC CFLAGS RM
环境变量:export 变量
二、LinuxOS
2-1:Linux的发展史
2-2:Linux的发行版本
2-3:Linux的体系结构
内核,shell,硬件
2-4:Linux的软件包管理
离线安装
在线安装
工具:APT
2-5:Linux的网络基础
IP地址:A,B,C,D,E类IP
子网掩码
网关
DNS服务器
2-6:Linux下的shell命令
三要素:命令名称 [选项] [参数]
用户切换命令
用户管理命令
常见的shell命令
软链接与硬链接
3、shell特殊字符
3-1:通配符
* ? [范围] [指定范围] [^指定范围]
3-2:管道
格式:command1 | command2 | ..... | commandN
理解
xargs命令
3-3:命令置换
格式:Command1 `Command2`
理解
管道与命令置换的区别
3-4:重定向
输入重定向
输出重定向
情况讨论: > >> 2> 2>> &> &>>
三、Linux下的shell编程
1.脚本的理解
shell命令,shell脚本
2.脚本的编写格式
3.脚本的编程步骤
4.脚本的语法
4-1:自定义变量
赋值 引用
4-2:位置变量
4-3:系统预定义变量
$# $@ $* $?
4-4:环境变量
添加新环境变量 export
修改环境变量值 export
清除环境变量 unset
5.脚本的语句
5-1:说明性语句
5-2:功能性语句
1.动态获取变量的值
read
2.通配符的转义
软转义:双引号 和 不加双引号
硬转义:单引号 和 \
3.expr算术运算命令
4.测试命令test
5-3:结构性语句
1.顺序结构
2.选择结构
3.循环结构
6.脚本的函数
总结
以上就是对这两周Linux和C高级学习的总结了,嵌入式学习的下一站将会是对IO的总结。