在Code Composer Studio中取消引用指针

时间:2013-06-11 19:18:16

标签: c++ pointers code-composer

我有一个在无符号字节数组中收到的值,我希望将其作为浮点数取消引用。将ptr作为uint8_t *指向一个包含四个值0,0,0xCD,0x42的字节数组(这是一个小端系统)。

float val = *(float*)ptr;

返回-1.34e8

当我输入:

*(float*)ptr;

在命中该段代码中的断点后的表达式窗口中,它按预期给出了102.5。此外,当我输入:

*(float*)(ptr - 1);

我得到错误的-1.34e8,好像编译器使用了ptr-1而不是我输入的内容。

我很困惑 - 我在这里错过了一些东西吗?

2 个答案:

答案 0 :(得分:3)

基本上deref是正确的。

如果你printf("%p", ptr);得到的地址可能不是4字节对齐(或至少2字节对齐)?在某些平台上可能需要这样做。

对于测试,只需在uint8_t *中传递一个实数浮点值,例如

float f= 102.5; 
yourfunct((uint8_t*)&f); 

看看是否有效。

答案 1 :(得分:0)

*(float*)(ptr - 1); 

与此相同

ptr--; //move the pointer to point to charackter in front of the previous one
*(float*)ptr;
这是你的意图吗? 或者你只是想从被指向ptr的值中减去1。