指向包含另一个地址的地址的指针

时间:2017-06-01 23:55:38

标签: c arrays pointers struct

我一直在研究一个特定的代码,这在我的程序中运行良好。我希望有人确认我的解释是否正确。我想在下面的代码中理解的部分是:

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++;
         } 

0 个答案:

没有答案