C语言基础课程主要是对基础知识的了解认识,这部分很多都学过了,不多说了。学习嵌入式,首先要有扎实的C语言基础,这对后面的学习很有帮助。
![](/upload/ad_content/xuanchuantu-20.jpg)
成都创新互联是一家专业提供
牡丹江企业网站建设,专注与
成都做网站、成都网站设计、
H5高端网站建设、小程序制作等业务。10年已为牡丹江众多企业、政府机构等服务。创新互联专业网站建设公司优惠进行中。
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
指针
![](/upload/otherpic37/abd618b75fe6434382a5f6002695fd54.jpg)
2.指针与数组
数组:在内存中,数组的数据元素是⼀段连续的空间,在这段空间中每
个元素占⽤对应的⼤⼩,元素与元素之间相连
![](/upload/otherpic37/0d83809d332943608f95bdcbf9428161.jpg)
3.指针与⼆维数组
![](/upload/otherpic37/2bf428e17f494ceb90709f797dedf9e9.jpg)
当
a +1
:表⽰移动⼆维数组的元素
(
⼀维数组
)
的大小地址
当
a[0] + 1
:表⽰移动⼀维数组的元素
(
普通数据
)
的大小地址
4.
数组指针
是⼀个指针,存储地址,⽤于存储整个数组的地址,指针的类型为数组地址
类型,指向整个数组
定义:
数组元素类型
(*
指针名
) [
数组⼤⼩
]
![](/upload/otherpic37/459d564a5a5d4abd82916885e580fd77.jpg)
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元起,快前往官网查看详情吧
新闻名称:C语言小结一波!!!-创新互联
浏览地址:
http://shouzuofang.com/article/dojcge.html