在stm8,编译器为IAR的环境下,IAP升级程序的指针定义问题。

头文件里:#defineNEAR_near;#defineN_ADDR_30x03;c文件里面:u8NEAR*DataAddress;DataAddress=*(u8NE... 头文件里:#define NEAR _near;
#define N_ADDR_3 0x03;

c文件里面:
u8 NEAR* DataAddress;
DataAddress = *(u8 NEAR**)(&DataBuffer[N_ADDR_3]);
请问这句话DataAddress = *(u8 NEAR**)(&DataBuffer[N_ADDR_3]);什么意思?
展开
 我来答
xf331785508
推荐于2016-09-23 · 超过40用户采纳过TA的回答
知道小有建树答主
回答量:116
采纳率:0%
帮助的人:82.9万
展开全部
DataAddress被定义成近指针,寻指范围不超过64KB,
(u8 NEAR**)表示强制转换成二维指针,即指向指针的指针;
(&DataBuffer[N_ADDR_3])表示取数组DataBuffer的第N_ADDR_3元素的地址;
DataAddress赋值号右边第一个*号,是解指针,对于一个二维指针的解指针,得到的结果仍是指针,是一维指针,赋值给一维指针DataAddress符合类型;
综合起来可以得出,数组DataBuffer的元素存的也是指针,指向最终数据的地址,类型是unsigned char型,对DataAddress解指针,即:
u8 dataValue = 0x00;

dataValue = *DataAddress;
解指针后即可得到数组DataBuffer[N_ADDR_3]中所存地址中的数据;

讲明白 了吧。全手敲啊,累死我了。
查晓筠0i5
2015-01-23 · TA获得超过2752个赞
知道大有可为答主
回答量:2.1万
采纳率:1%
帮助的人:4950万
展开全部
关注这个问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式