首页 理论教育单片机基础:指针类型解析

单片机基础:指针类型解析

【摘要】:通过这些通用指针,C51库函数可访问片内外RAM空间、ROM空间中的所有数据。定义通用指针变量的语法如下:数据类型标识符*存储类型标识符指针变量名;其中,存储类型标识符指的是指针自身的存储位置。通用指针的定义举例如下:2.指定存储区指针指定存储区指针又称为指定存储类型指针,也称为基于内存的指针。若没有说明指针变量的存储类型,则由C51的存储模式决定,具体可参考5.2.3节的内容。

Keil公司的C51编译器提供通用指针和指定存储区指针两个类型的指针。

1.通用指针

通用指针也称为一般指针。通用指针变量的定义方式和标准C指针变量的定义方式相同。通用指针变量保存在RAM中,占用3个字节:第一个字节是指针变量的存储类型(空间位置),第二个字节是指针(地址)的高字节,第三个字节是指针(地址)低字节,即:

存储类型编码如下:

通用指针可访问MCS-51系列单片机片内RAM空间、片外RAM空间、ROM空间内的任何一个变量。因此,C51库函数多使用通用指针类型。通过这些通用指针,C51库函数可访问片内外RAM空间、ROM空间中的所有数据。定义通用指针变量的语法如下:

数据类型标识符*存储类型标识符指针变量名;

其中,存储类型标识符指的是指针自身的存储位置。若没有说明指针变量的存储类型,则是由C51的存储模式决定,具体可参考5.2.3节的内容。

通用指针的定义举例如下:

(www.chuimin.cn)

2.指定存储区指针

指定存储区指针又称为指定存储类型指针,也称为基于内存的指针。指定存储区指针在指针的定义(声明)中包含一个存储类型标识符,指向一个确定的存储空间。存储类型标识符有data、bdata、idata、pdata、cdata和code;存储空间有片内RAM、片外RAM和ROM,详见表5-2。定义指定存储区指针变量的语法如下:

数据类型标识符存储类型标识符*存储类型标识符指针变量名;

注意:前面的存储类型标识符是说明指针指向的存储空间,后面的存储类型标识符是说明指针自身的存储位置。若没有说明指针变量的存储类型,则由C51的存储模式决定,具体可参考5.2.3节的内容。

指定存储区指针和通用指针的对比如下:

指定存储区指针的定义举例如下:

注意:使用通用指针编译后产生的代码比使用指定存储区指针编译后产生的代码要多得多,执行起来要慢得多。如果优先考虑执行速度,应尽可能使用指定存储区指针,尽可能不用通用指针;如果优先考虑函数的通用性,则应尽可能使用通用指针,不用指定存储区指针。