【发布时间】:2015-10-03 18:38:47
【问题描述】:
我的结构如下
typedef struct runData{
byte curentCycle = 0;
sensorData sensor[8];
}
其中sensorData为如下结构
typedef struct sensorData{
float currentValue=NULL;
float lastValue;
float maxValue[2] = {-50 ,-50};
float minValue [2]= {1001,1001};
byte trend=0;
byte mode = 1;
sensorSetPoints setPoints[2];
};
sensorSetPoints 是
typedef struct sensorSetPoints{
float setPoint;
float rise;
float drop;
};
我通过
创建和添加数据runData *thisRun;
thisRun->sensor[0].setPoints[0].setPoint = 26.77;
现在我想得到这个值,不是使用结构而是通过偏移指针。我得到了 thisRun 的地址并向它添加了一个偏移量,这个偏移量来自我创建的一个数组,其原则是这是结构中的第 11 项,它之前的 10 项(6 个浮点数和 4 个字节)给出了偏移量28. 当我将此添加到 thisRun 的地址时,我认为我应该有一个指向 thisRun->sensor[0].setPoints[0].setPoint
的指针所以如果你到目前为止同意我的观点,为什么以下内容不起作用
uint16_t *baseAddress = (uint16_t *)thisRun;
uint16_t offset = readOffset(10);//returns offset
baseAddress += offset;
float *f;
memcpy(f,baseAddress,4);
当我打印 f 时,它是 0.00 我错过了什么?
【问题讨论】:
-
你的代码编译了吗?您如何在其定义中初始化结构成员?这是 c++ 吗?
-
你为什么在你所有的
structs 上使用typedef?您从未指定新的类型名称。
标签: c pointers data-structures offset