这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 关于指针的问题

共9条 1/1 1 跳转至

关于指针的问题

专家
2014-01-03 19:08:17     打赏

C语言的指针是很强大的,但是要会用才能事半功倍,否则问题会层出不穷。

在16位机上定义:char *p,指针指向的是8位的char型数据,但指针p本身是16位的.

在8位机51单片机上,定义char *p, 那么这个指针p本身是8位的还是16位?




关键词: 指针     问题    

专家
2014-01-03 19:40:06     打赏
2楼

恩,32位机没有疑问,是32位。

感觉8位机不应该是8位的,应该是16位的。


专家
2014-01-03 20:52:35     打赏
3楼
因为如果是8位的话,指针寻址能力太差了,只能寻址256个内存单元,根本满足不了实际使用的需要。所以推测应该是16位的。

专家
2014-01-03 21:08:02     打赏
4楼
程序没问题,能否解释下,仿真结果代表什么意思?51很少用,呵呵。

专家
2014-01-03 21:14:39     打赏
5楼
,哦,介个样子,24位,这真让我意外啊。

专家
2014-01-03 21:22:40     打赏
6楼
多谢,受教了

专家
2014-01-04 08:50:22     打赏
7楼

恩,解释的非常好,谢谢。

就是说,根据存储位置的不同,定义不同长度的指针,


    存储类型与存储区关系
     data ---> 可寻址片内ram(0-127)
     bdata ---> 可位寻址的片内ram
     idata ---> 可寻址片内ram,允许访问全部内部ram(0-255)
     pdata ---> 分页寻址片外ram (MOVX @R0) (256 BYTE/页)
     xdata ---> 可寻址片外ram (64k 地址范围FFFFH)
     code ---> 程序存储区 (64k 地址范围)


可以看出,对于data/idata来说,8位的指针就可以了,但是xdata/code需要16位的指针才行。


专家
2014-01-04 08:53:16     打赏
8楼
长知识了,呵呵,实践出真知啊,书本上都不介绍这东西的。

专家
2014-01-04 21:31:36     打赏
9楼
恩,跟指针要寻址的存储器有关。

共9条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]