【发布时间】:2023-04-06 04:37:01
【问题描述】:
我正在使用二进制文件结构。读取数据的代码示例是C语言的,我需要在Delphi中读取。我赶紧补充一下,我没有C编程经验。
鉴于以下
typedef struct {
uchar ID, DataSource;
ushort ChecksumOffset;
uchar Spare, NDataTypes;
ushort Offset [256];
} HeaderType;
...
typedef struct {
ushort ID;
...
ushort DistanceToBin1Middle,TransmitLength;
} FixLeaderType;
...
HeaderType *HdrPtr;
FixLeaderType *FLdrPtr;
unsigned char RcvBuff[8192];
void DecodeBBensemble( void )
{
unsigned short i, *IDptr, ID;
FLdrPtr = (FixLeaderType *)&RcvBuff [ HdrPtr->Offset[0] ];
if (FLdrPtr->NBins > 128)
FLdrPtr->NBins = 32;
...
我难以理解的一点是:
FLdrPtr = (FixLeaderType *)&RcvBuff [ HdrPtr->Offset[0] ];
据我所知,[ HdrPtr->Offset[0] ]; 将返回 HdrPtr 指向的 HeaderType 结构中的第一个 Offset 数组项的值?所以相当于HdrPtr^.Offset[0]?
那么&RcvBuff [ HdrPtr->Offset[0] ]; 应该返回包含索引的RcvBuff 数组项的值的内存地址,所以相当于@RecBuff[HdrPtr^.Offset[0]]?
然后我迷路了 (FixLeaderType *).. 。有人可以帮忙解释一下 FldrPtr 引用了什么吗?
【问题讨论】:
标签: c delphi pointers translate