我有以下结构
typedef struct {
uint8 u8Status;
uint64 u64IeeeAddrRemoteDev;
uint16 u16NwkAddrRemoteDev;
uint8 u8NumAssocDev;
uint8 u8StartIndex;
/* rest of the message is variable Length */
uint16* pu16NwkAddrAssocDevList;
} ZPS_tsAplZdpIeeeAddrRsp;
此处pNwkAddrAssocDevList
是指向16位网络地址列表的指针。
我正在使用以下这段代码
ZPS_tsAplZdpIeeeAddrRsp p;
/* this structure p is already filled by the system, i just need to access it*/
/* using for loop */
printf("%04x",p.pu16NwkAddrAssocDevList[i]);
但我没有得到正确的值,它会返回一些内存地址。
有人可以帮我解决问题吗?
答案 0 :(得分:0)
这里pu16NwkAddrAssocDevList是一个指针。您需要在结构中添加另一个变量来定义pu16NwkAddrAssocDevList中值的长度/值,例如 int length 。一旦你有了这个长度,你就可以通过循环来访问pu16NwkAddrAssocDevList的值。
for (int i=0; i < p.length; i++) {
printf("%04x", p->pu16NwkAddrAssocDevList);
pu16NwkAddrAssocDevList++;
}
通过这种方式,您可以轻松地通过存储在pu16NwkAddrAssocDevList中的值进行迭代。