c - 如何访问结构体内部数组的指针?

标签 c arrays pointers structure

我有以下结构

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]);

但是我没有得到正确的值,它返回一些内存地址。

谁能帮我解决这个问题吗?

最佳答案

这里的pu16NwkAddrAssocDevList是一个指针。您需要向结构添加另一个变量来定义 pu16NwkAddrAssocDevList 中值的长度/数量,例如 int length。获得长度后,您可以通过循环访问 pu16NwkAddrAssocDevList 的值。

for (int i=0; i < p.length; i++) {

    printf("%04x", p->pu16NwkAddrAssocDevList);

    pu16NwkAddrAssocDevList++;

}

这样您就可以轻松地迭代 pu16NwkAddrAssocDevList 中存储的值。

关于c - 如何访问结构体内部数组的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11724304/

相关文章:

arrays - 数组可以有尾部填充吗?

c++ - gdb:不在上下文中的结构的大小?

c - 如何从 x86_64 windows 异常处理程序中正确调用 rtlunwind

java - JAVA的引用和C、C++的引用有区别吗?

pointers - 如何在指针内改变结构中的字段?

c - c 中的指针和结构体?

c - 为什么可以使用具有错误签名的比较函数调用 `qsort` 并且编译没有警告

javascript - 对象数组中匹配键的总和值

php - PHP 中的 "Function split() is deprecated"?

JAVA:对象数组仅打印最后一个元素