我一直在研究一个特定的代码,这在我的程序中运行良好。我希望有人确认我的解释是否正确。我想在下面的代码中理解的部分是:
UINT8* pData;
pData = (MFG.Ident.MFGName);
我必须定义pData
类型的指针变量,然后才能访问MFGName
我必须将其写为pData = *&(MFG.Ident.MFGName)
。
注意:MFG
是一个结构,它包含一个元素Ident
,它是另一个结构,它进一步包含一个元素MFGName
,而MFGName
是一个数组。如下所示
是因为MFG.Ident
是一个包含数组的结构,这就是为什么需要以这种方式访问它。
可以写得更好吗?
IN HEADER FILE PartName.h
#ifndef PartName_H
#define PartName_H
typedef UINT8 MFGName_Struct_t [10]; //Is an array of 10 x UINT8 elememnts
typedef struct
{
UINT16 <some variable>;
MFGName_Struct_t MFGName; //Is an Array of 10 elements of type UINT8
}IDENT_Struct_t;
typedef struct MFG_Struct_t
{
int8 <some variable>;
UINT8 <some other variable>;
IDENT_Struct_t Ident;//Ident struct has 2 members of type UINT16, MFGName_Struct_t
} MFG_Struct_t;
#endif
IN C FILE &#34; PartName.c&#34;
#include PartName.h
static MFG_Struct_t MFG; //MFG struct has 3 members of type int8,UINT8,IDENT_Struct_t
const UINT8 Test[3]={0x48, 0x49, 0x4A};
UINT8* pData;
pData = (MFG.Ident.MFGName);
UINT8 CompA;
UINT8 CompB;
for (i = 0;(i < 3);i++) //Compare only first 3 elements of array
{
CompA = *pData;
CompB = Test[i];
if (CompA != CompB)
{
DO SOMETHING
}
else
{
DO SOMETHING
}
pData++;
}