C51指针定义

指针变量定义与一般变量的定义类似,其形式如下:


数据类型 [存储器类型1] * [存储器类型2] 标识符;


[存储器类型1] 表示被定义为基于存储器的指针,无此选项时,被定义为一般指针。这两种指针的区别在于它们的存储字节不同。一般指针在内存中占用三个字节,第一个字节存放该指针存储器类型的编码(由编译时由编译模式的默认值确定),第二和第三字节分别存放该指针的高位和低位地址偏移量。存储器类型的编码值如下:


存储类型I Idata/data/bdata xdata pdata Code


编码值 0×00 0×01 0xFE 0xFF


[存储类型2]用于指定指针本身的存储器空间。


char * c_ptr; int * i_ptr; long * l_ptr;


上述定义的是一般指针,c_ptr指向的是一个char型变量,那么这个char型变量位于哪里呢?这和编译时由编译模式的默认值有关,


如果Menory Model—Variable—Large:XDATA,那么这个char型变量位于xdata区:


如果Menory Model—Variable—Compact:PDATA, 那么这个char型变量位于pdata 区:


如果Menory Model——Variable——Small:DATA,那么这个char型变量位于data区。


而指针c_ptr, i_ptr, l_ptr变量本身位于片内数据存储区中。


char * data c_ptr; int * idata i_ptr; long * xdata l_ptr;


上述定义,c_ptr, i_ptr, l_ptr变量本身分别位于data ,idata,xdata区。


char data * c_ptr; //表示指向的是data区中的char型变量,c_ptr在片内存储区中;


int xdata * i_ptr; //表示指向的是xdata区中的int型变量,i_ptr在片内存储区中;


long code * l_ptr; //表示指向的是code区中的long型变量,l_ptr在片内存储区中;


char data * data c_ptr; //表示指向的是data区中的char型变量,c_ptr在片内存储区data中;


Int xdata * idata i_ptr; //表示指向的是xdata区中的int型变量,i_ptr在片外存储区xdata中;


long code * xdata l_ptr; //表示指向的是code区中的long型变量,l_ptr在片内存储区xdata中;


通过C51指针定义和应用小结-单片机-电子工程世界网.


 Posted by Ian at 09:39  Tagged with: pointer
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值