0

主な構造

typedef struct {
   uint8 u8Status;
   uint8 u8NeighborTableEntries;
   uint8 u8StartIndex;
   uint8 u8NeighborTableListCount;
   /* Rest of the message is variable length */
   ZPS_tsAplZdpDiscNtEntry* pNetworkTableList;
                                              //pNetworkTableList is a pointer to 
                                              //the first   
                                              //entry in the list of reported
                                              //Neighbour table entries
 } ZPS_tsAplZdpMgmtLqiRsp;


typedef struct
{
   uint64 u64ExtPanId;
   uint64 u64ExtendedAddress;
   uint16 u16NwkAddr;
   uint8 u8LinkQuality;
   uint8 u8Depth;
   union
   {
     struct
     {
       unsigned u2DeviceType:2;
       unsigned u2RxOnWhenIdle:2;
       unsigned u2Relationship:3;
       unsigned u1Reserved1:1;
       unsigned u2PermitJoining:2;
       unsigned u6Reserved2:6;
    } ;
    uint8 au8Field[2];
 } uAncAttrs;
} ZPS_tsAplZdpDiscNtEntry;

ZPS_tsAplZdpMgmtLqiRsp *pointer; を定義しました。

これは大丈夫そうです..

pointer->u8Status
pointer->u8NeighborTableEntries
pointer->u8StartIndex
pointer->u8NeighborTableListCount

しかし、どうすれば ZPS_tsAplZdpDiscNtEntry 構造内のこれらの値にアクセスできますか

4

2 に答える 2

0

次のようにして配列にアクセスできます。pointer->pNetworkTableList そのため、そこから構造のすべての要素にアクセスできます。

たとえば、インデックス 0 の要素の u64ExtPanId へのアクセス:

pointer->pNetworkTableList[0].u64ExtPanId = 1232;
于 2012-02-02T11:33:40.330 に答える
0

ポインターはありますが、構造自体のインスタンスはありません。次の手順を実行します。

ZPS_tsAplZdpMgmtLqiRsp *pointer = (ZPS_tsAplZdpMgmtLqiRsp *)malloc(sizeof(ZPS_tsAplZdpMgmtLqiRsp));

...そして、はい、pNetworkTableListにもメモリを割り当てる必要があります:

pointer->pNetworkTableList = (ZPS_tsAplZdpDiscNtEntry *)malloc(sizeof(ZPS_tsAplZdpDiscNtEntry));

その後、あなたはすることができます

行う

 pointer->pNetworkTableList->u8Status = 12; 

等々。

することを忘れないでください

free(pointer->pNetworkTableList);
free(pointer);

仕事の終わりに。

于 2012-02-02T11:35:08.423 に答える