主要结构
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->u8Status
pointer->u8NeighborTableEntries
pointer->u8StartIndex
pointer->u8NeighborTableListCount
但如何在ZPS_tsAplZdpDiscNtEntry结构中访问这些值
答案 0 :(得分:0)
您可以使用以下代码访问数组:pointer->pNetworkTableList
所以从那里你可以访问结构的所有元素..
e.g。访问索引为0的元素的u64ExtPanId:
pointer->pNetworkTableList[0].u64ExtPanId = 1232;
答案 1 :(得分: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);
在工作结束时。