microplc 发表于 2019-2-19 21:11:13

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

请教编程老师:我有一个预定义的数组序列,比如 unsigned char bytedata,那么我可以在程序中直接引用bdata做数学计算,但这个数组数据内容对我还有另一层意义,现在我想对这个数组可以进行字运算,直接引用 int worddata,实际上在内存中bdata和wdata是存储在相同的绝对地址位置上的同一段数据而已,这在arduino中怎么实现呢?最好不要一个复杂的转换操作。谢谢!

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

FASTSHIFT 发表于 2019-2-19 21:35:48

unsigned char *bytedata = 0x1234;
bytedata = new unsigned char;
int *worddata = 0x1234;

或者:
unsigned char bytedata;
int *worddata = (int*)bytedata;
建议使用这种方式

xo37 发表于 2019-2-20 15:21:19

指针是个好东西……

microplc 发表于 2019-2-20 20:59:16

非常感谢!进一步学习研究!

microplc 发表于 2019-2-27 21:00:42

不好意思,老师。您给的方法我还是无法使用worddata这样的变量去运算,编译出错。

microplc 发表于 2019-2-27 21:52:23

我可能没描述清楚,下面的语句:int thisByte1 = worddata;是编译运行没问题的,但是worddata = 0;这样的赋值语句是不能通过编译的,错误提示是:error: 'worddata' does not name a type。

FASTSHIFT 发表于 2019-2-27 22:03:40

我编译没问题

microplc 发表于 2019-2-27 22:09:50

谢谢老师,找到问题原因了,赋值语句不能不在函数之内使用,我没注意到。

microplc 发表于 2019-2-27 22:12:41

还有一个附带问题啊,如果我有另一个数组worddata2对应的是bytedata里面的bytedata-bytedata,我又应该怎么声明呢?用法是一样的。

microplc 发表于 2019-2-28 21:45:28

谢谢老师,我学会了。
页: [1]
查看完整版本: arduino不允许指定变量绝对地址该怎么办?