极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 20092|回复: 9

arduino不允许指定变量绝对地址该怎么办?

[复制链接]
发表于 2019-2-19 21:11:13 | 显示全部楼层 |阅读模式
请教编程老师:我有一个预定义的数组序列,比如 unsigned char bytedata[100],那么我可以在程序中直接引用bdata做数学计算,但这个数组数据内容对我还有另一层意义,现在我想对这个数组可以进行字运算,直接引用 int worddata[50],实际上在内存中bdata和wdata是存储在相同的绝对地址位置上的同一段数据而已,这在arduino中怎么实现呢?最好不要一个复杂的转换操作。谢谢!

备注:我原来是声明   unsigned char bytedata[100]@0x1234
                                   int worddata[50]@0x1234
就可以实现的,但是arduino不认识@。
回复

使用道具 举报

发表于 2019-2-19 21:35:48 | 显示全部楼层
unsigned char *bytedata = 0x1234;
bytedata = new unsigned char[100];
int *worddata = 0x1234;

或者:
unsigned char bytedata[100];
int *worddata = (int*)bytedata;
建议使用这种方式
回复 支持 1 反对 0

使用道具 举报

发表于 2019-2-20 15:21:19 | 显示全部楼层
指针是个好东西……
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-2-20 20:59:16 | 显示全部楼层
非常感谢!进一步学习研究!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-2-27 21:00:42 | 显示全部楼层
不好意思,老师。您给的方法我还是无法使用worddata[1]这样的变量去运算,编译出错。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-2-27 21:52:23 | 显示全部楼层
我可能没描述清楚,下面的语句:int thisByte1 = worddata[1];是编译运行没问题的,但是worddata[1] = 0;这样的赋值语句是不能通过编译的,错误提示是:error: 'worddata' does not name a type。
回复 支持 反对

使用道具 举报

发表于 2019-2-27 22:03:40 | 显示全部楼层
我编译没问题

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-2-27 22:09:50 | 显示全部楼层
谢谢老师,找到问题原因了,赋值语句不能不在函数之内使用,我没注意到。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-2-27 22:12:41 | 显示全部楼层
还有一个附带问题啊,如果我有另一个数组worddata2[5]对应的是bytedata[100]里面的bytedata[80]-bytedata[89],我又应该怎么声明呢?用法是一样的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-2-28 21:45:28 | 显示全部楼层
谢谢老师,我学会了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-24 14:25 , Processed in 0.077675 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表