初入嵌入式,经过两周的C语言学习,在此进行对C语言学习的大致的整体汇总,主要掌握了以下的知识点。
目录
Day1
一、计算机的基本组成
- 输入输出设备
- CPU处理器(控制器,运算器,寄存器)
- 存储器(内存和外村)
- 程序
二、什么是程序
- 指令
- 程序
三、程序的设计步骤
- 编辑
- 编译
- 运行/调试
四、计算机的数据表示
4.1非数值数据
- ASCII码表
- 字符、图片、声音
4.2数值数据(进制转换)
- 二进制
- 八进制
- 十六进制
4.3进制转换
- 其他进制转十进制
- 十进制转其他进制
- 二进制八进制和十六进制的相互转换
五、基本数据类型
- 关键字
- 标识符
- 命名规则
5.1基本数据类型
- 32os中各个基本数据类型以及他们所占据多少字节
- 64os中各个基本数据类型以及他们所占据多少字节
5.2有符号数和无符号数
- 正数和负数以补码的形式保存在计算机中
- 正数的补码、反码、原码
- 负数的补码、反码、原码
- 无符号数
5.3字符型家族
- 值域范围
- 超出值域范围的计算
5.4整型家族
- 值域范围
5.5浮点型家族
- float表示几位有效数据
- double表示几位有效数据
- %.nf输出小数点后n位
六、转义字符
- 转义字符表
- 一串字符串所占空间大小的计算
七、常量
- 常量的概念
7.1字符常量
7.2整形常量
7.3浮点型常量
7.4字符串常量
7.5标识常量(宏)
- 宏的定义
- #define 宏名 表达式
- 宏只是一个单纯的替换
- 宏函数,括号保证优先级
Day2
一、变量
- 变量的定义
- 内存空间图
- 存储类型,数据类型,变量名的含义
1.1局部变量
1.2全局变量
1.3存储类型
- 四种存储类型
- auto
- static
- extern
- register
1.4初始化
1.5生命周期和作用域
- 局部变量和全局变量的生命周期和范围
- 被static修饰的局部变量和全局变量的生命周期和范围
二、数据类型转换
2.1强制类型转换
2.2隐式类型转换
三、运算符
- 单算移关与,异或逻条赋
- 单目运算符、算术运算符、左移、右移、关系运算符、按位与、异或、按位或、逻辑运算符、条件运算符、赋值
3.1算数运算符
3.2关系运算符
3.3逻辑运算符
- 与和或的截断法则
3.4sizeof运算符
3.5三目运算符
3.6逗号运算符
3.7位运算符
- 按位与 &
- 按位或 |
- 按位取反 ~
- 异或 ^
- 左移 <<
- 右移 >>
Day3
一、输入输出
- scanf,printf
1.1输出
- 整型的输出格式
- 字符型的输出格式
- 浮点型的输出格式
1.2输入
- 输入字符和数字的区别
二、字符的输入和输出
- getchar()
- putchar()
三、三大结构
3.1顺序结构
3.2选择结构
- if else
- switch case default
3.3循环结构
- for与for嵌套
- while
- do...while
- goto loop
Day4
一、数组概念
二、数组定义
三、数组初始化
3.1部分初始化
- 部分初始化后 没有初始化的部分为0
3.2全部初始化
- 全部初始化能省略元素个数
四、访问
Day5
一、冒泡排序
- 排序思想
- 代码实现
二、字符数组
三、字符串的输入输出函数
3.1字符串的输出函数
- printf()
- puts()
3.2字符串的输入函数
- scanf()
- gets()
四、scanf和gets的区别
五、printf和puts的区别
六、字符串的处理函数
- strlen
- strcpy
- strcat
- strcmp
6.1求字符串的长度
- 不用strlen的代码实现
6.2字符串的拷贝函数
- 不用strcpy的代码实现
6.3字符串的连接函数
- 不用strcat的代码实现
6.4字符串的比较函数
Day6
一、二维数组的概念
二、二维数组的定义
三、初始化
3.1部分初始化
3.2全部初始化
- 行数可以省略,但列数不可省略
四、访问
- 使用for循环,实现对二维数组的每个元素进行访问
五、二维字符数组
- 本质
六、函数
6.1函数的概念
6.2为什么要使用函数
6.3库函数
6.4自定义函数
- 存储类型 数据类型 函数名 形参列表 函数体
- 调用函数
Day7
一、指针的概念
二、什么是地址
- 内存
- 字节
三、指针变量
四、指针的定义
- 指针指向的数据类型
- 指针的数据类型
- *和&
- 32os的指针大小为4字节
- 64os的指针大小为8字节
五、指针的赋值
- 指针赋值的作用
六、空指针
- 0号地址禁止操作
七、野指针
- 局部指针不初始化
- 避免局部指针措施--指向0号地址
7.1值传递
7.1地址传递
Day8
一、二级指针的概念
- 指针的指针
二、二级指针的定义
- 存储类型 数据类型 *指针变量名
三、指针的算术运算
- p+1、p+n、p-q的移动距离
- 注意指针指向的数据类型
- 指针的算术运算在连续的内存空间中,才有意义
四、指针和数组的关系
- 利用指针对数组进行操作
4.1指针常量和一维数组的关系
4.2指针变量和一维数组的关系
五、冒泡排序
- 利用指针访问数组,实现冒泡排序
Day9
一、指针和二维数组的关系
- &a、a、&a[0]、&a[0][0]
- a不是int** 类型的原因
- a、a[0]的指向
二、数组指针
2.1数组指针的概念
2.2数组指针的定义
- 存储类型 数据类型 (* 变量名) [元素的个数]
2.3数组指针和一维数组的关系
2.4数组指针和二维数组的关系
- 定义二维数组指针
- 使二维数组指针指向二维数组
- 通过二维数组指针操作二维数组
三、指针数组
3.1指针数组的概念
3.2指针数组的定义
3.3指针数组和二维数组的关系
- 定义二维指针数组
- 使二维指针数组指向二维数组
- 通过二维指针数组操作二维数组
Day10
一、const修饰
- 使用指针间接更改const修饰的变量
- const修饰指针 左数右指
二、main函数传参
- 字符串个数
- 每一个字符串的地址
总结
以上就是对这两周C语言学习的总结了,嵌入式学习的下一站将会是对LinuxC的总结。