[英]Nested structure with array of structure pointer
主要结构
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结构内的那些值
您可以使用以下pointer->pNetworkTableList
访问数组: pointer->pNetworkTableList
以便从那里可以访问结构的所有元素。
例如,访问索引为0的元素的u64ExtPanId:
pointer->pNetworkTableList[0].u64ExtPanId = 1232;
您有指针,但是没有结构本身的实例。 做下一个:
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);
在工作的最后。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.