C语言基础课程主要是对基础知识的了解认识,这部分很多都学过了,不多说了。学习嵌入式,首先要有扎实的C语言基础,这对后面的学习很有帮助。

C语言高级侧重于指针的学习。当然对于编译环境也要选着合适的。linux操作系统的使用对我们的学习很有用的。指针是我们学习嵌入式的重点部分。
指针:指针就是存储另⼀个变量的内存地址的⼀种数据类型,即指针的内容就是另⼀个变量的内存地址 。指针本⾝也是⼀个变量,所以指针也是有⾃⼰的地址,但是这个变量有点特 殊,存放的是另⼀个变量的地址。
1. 指针的运算 指针的运算,对指针变量(指针变量存储的数据 ( 数据是地址 ) )进⾏运算 px 表⽰指针变量 + (加法): px + n :指针 px 向地址增⼤的⽅向移动 n 个数据(指针指向的数据类型) ⼤⼩的地址 如: int * px = 0x10 px + 5 == 0x10 + sizoef(int)*5 = 0x10 + 0x14 == 0x24 - (减法): px - n :指针 px 向地址减⼩⽅向移动 n 个数据⼤⼩的地址 如: double * px = 0x30 px - 3 = 0x30 - 3*sizeof(double) = 0x30 - 0x18 = 0x18 特殊: px1 - px2 :指针减指针,指两个地址间间隔多少个数据 如: double * px1 = 0x10, *px2 = 0x20; px2 - px1 = (0x20 - 0x10)/sizeof(double) = 0x10 / 8 = 2 *( 乘法 ) : px * n--- 错误 /( 除法 ) : px / n--- 错误 ++ : px++ :先使⽤指针变量 px ,然后 px = px + 1 ,向地址增⼤⽅向移动⼀个数 据类型⼤⼩地址存储到 px 中 ++px :先 px = px+1, 向地址增⼤⽅向移动⼀个数据类型⼤⼩地址存储到 px 中,然后再使⽤ px 指针
2.指针与数组
数组:在内存中,数组的数据元素是⼀段连续的空间,在这段空间中每
个元素占⽤对应的⼤⼩,元素与元素之间相连

3.指针与⼆维数组

5、函数指针:
⽤于存储函数地址类型的指针变量
返回类型 函数名
(
指向类型
*
指针名
);
由于函数的返回值,参数列表的类型都各不相同
,
函数指针只能存储⼀种函数
的地址
函数指针定义:
返回值类型
(*
函数指针名
)(
参数列表
);
函数指针使⽤:
----
调⽤函数指针对应的函数
函数指针名
(
实际参数
);
6、空指针、野指针、万能指针
野指针:
指针存储的地址不明确
(
指向的空间不清楚
--
没有分配不能使⽤
)
,这个地
址对应的空间是否能够在程序中具有操作不清楚
空指针:
指针记录的地址是
0x0
这个地址就叫做空指针,系统规定
0x0
这个地址不
允许任何程序进⾏访问
NULL === 0x0
7、万能指针:
不管是哪种类型的指针,都是⽤来存储地址,内存地址⽤多少位来表⽰地址
早就规定好了,每个地址都是相同的位数
32
位机器⽤
4B
来表⽰地址
64
位机器⽤
8B
来表⽰地址
void
:空类型,不存在这个对应的类型⼤⼩
void:空指针类型,指针类型,⼤⼩就是4B/8B,存储地址
void 叫做万能指针(指向任意类型),可以存储任意类型的地址
(
指针值
)
,
但是不能取
*
取对应地址中的值
由于是万能指针,可以存储任意类型的地址,也可以把指针值赋值给其他任
意类型的指针变量
8、动态内存
1.
申请空间
指针变量
= malloc(
字节⼤⼩
)
注意:如果你要按照某种类型去使⽤申请的空间,那你的指针变量就应 该是对应的类型,如:按照整型去访问这个空间,指针应该是int类型的地址。
*
指针变量
:
就是访问对应的空间
如
:
int * p = malloc(20)
*p;-----
访问
4
个字节,按照整数
*(P+1);-------
访问
p
后的
4
个字节,按照整数
2.
释放空间
free(
空间⾸地址
);---
释放对应空间
注意:申请了空间⼀定记得⾃⼰释放,系统不会帮我们释放你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧