C51中关于指针的问题

[复制链接]
2768|4
 楼主| net.x 发表于 2008-6-3 17:49 | 显示全部楼层 |阅读模式
在C51中,如果定义一个指向unsigned&nbsp;char型变量的指针&nbsp;,则定义为<br />unsigned&nbsp;char&nbsp;data&nbsp;*point;<br /><br />如果指针*point所指的变量是xdata,也就是说有一个变量为<br />&nbsp;unsigned&nbsp;char&nbsp;xdata&nbsp;i;<br />那么point&nbsp;=&nbsp;&i&nbsp;时,(*point)应该是一个0x0000~0x7FFF(假定是一个64K的RAM)中的某一个地址<br /><br />如果指针*point所指的变量是data,也就是说有一个变量为<br />&nbsp;unsigned&nbsp;char&nbsp;data&nbsp;j;<br />那么point&nbsp;=&nbsp;&j&nbsp;时,(*point)应该是一个0x00~0x7F中的某一个地址<br /><br />也就是说(*point)中的内容有可能是一个字节也有可能两个字节<br /><br />那在系统分配地址时,当定义unsigned&nbsp;char&nbsp;data&nbsp;*point时,他分配的地址是几个字节?
computer00 发表于 2008-6-3 21:37 | 显示全部楼层

unsigned char data *point;只分配到一个字节

因为它是指向内部RAM的,所以只有1字节。如果你将XDATA的地址赋给它,那么就会截取地址的低8位。
 楼主| net.x 发表于 2008-6-4 08:51 | 显示全部楼层

请教圈圈

如果我现在要定义一个指针,指向位于xdata的unsigned&nbsp;char型变量,如何定义?
computer00 发表于 2008-6-4 09:50 | 显示全部楼层

unsigned char xdata *point;

既然你知道定义data型的,怎么就不会想到用xdata来定义xdata型的呢?
zhaoyu2005 发表于 2008-6-4 09:50 | 显示全部楼层

LZ试一下不就知道了

在c51里写个函数,试试不就知道了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

46

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部