浅析C语言中的变量修饰符

描述

 

一、修饰符类型


 

51单片机采用哈佛结构。内存空间编址有重叠。可以在不同总线上定义不同的变量。在KEIL C51中定义了data、idata、xdata、code几种域修饰符。这些修饰符决定了变量访问方式。

data:固定指前面0x00-0x7F的128个RAM,可以用acc直接读写,速度最快,生成的代码也最小。

idata:固定指前面0x00-0xFF的256个RAM,其中前128和data的128完全相同,只是访问的方式不同。

xdata:外部扩展RAM。

code:ROM。

C语言

C语言

二、变量定义


 

对变量进行声明时可以指定变量的存储类型如:uchar data x和data uchar x相等,都是在片内RAM区分配一个字节的空间。

同样对于指针变量的声明,因涉及到指针变量本身的存储位置和指针所指向的存储位置不同而进行相应的存储区类型关键字的声明。

如下一句代码,表示的是:指在RAM区分配一个指针变量(“*”号后的关键字的作用),而且这个指针本身指向xdata区(“*”前xdata关键字的作用)

C语言

C语言

三、指针变量与存储区域关系


 

定义如下变量:

C语言

第一种情况:是指在片内RAM分配一个指针变量(“*”号后的data关键字的作用),而且这个指针本身指向xdata区(“*”前xdata关键字的作用)。这种定义方式访问效率最高。

C语言

第二种情况:是指在idata区域分配一个指针变量,指针变量指向xdata区域。这种访问效率不如第一种。

C语言

第三种情况:是指在xdata区域分配一个指针变量,指针变量指向xdata区域。这种访问效率不如第二种。

C语言

第四种情况:这种定义方式是错误,该指针变量只能访问data区域,无法访问xdata区域。

C语言

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分