针对于嵌入式开发者来说,C语言只是一个工具,处于决定性地位。就像一个农民,连锄头都抗不好,使用不好工具,怎么深耕??在我写这系列笔记之前已经有了一定的C基础,但是不够完善,现在想系统整理一下,看看自己缺漏的地方在哪里,打好地基,再拔高楼。
推荐韦东山老师的课,讲的很细。我这个系列的笔记基于他的课程来展开:
韦东山C语言加强
首先要知道,ARM内部的结构主要就是CPU,内存(RAM),flash
其中CPU都读写内存,读flash
变量和指针
口诀:
变量变量,能变的量,能读能写,自然就是在内存里。
指针指针,保存的是地址,32位的处理器中的地址都是32位的,无论什么类型的指针变量,都是4字节。
sizeof和关键字
1.sizeof(p)和sizeof(*p)分别表示什么?
int p;
int*p;
printf("sizeof(int) = %d,sizeof(int*) = %d"\r\n,sizeof(int),sizeof(int*));
p表示的是int型的变量,int类型变量有4字节;
*p表示的是int*类型的变量,表示的是地址,地址32位,4字节。
2.volatile 易变的
将我们不想被程序优化的变量进行定义
struct
结构体函数指针等等
结构体就是使用基本类型创建新的类型
struct typename {
char*name;
int age;
}