-1

私は次の構造を持っています

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

しかし、正しい値を取得していません。メモリアドレスを返します。

誰かが私が問題を解決するのを手伝ってもらえますか?

4

1 に答える 1

0

ここでは、pu16NwkAddrAssocDevListがポインターです。構造体に別の変数を追加して、pu16NwkAddrAssocDevListの値の長さ/数(int lengthなど)を定義する必要があります。長さが決まったら、ループしてpu16NwkAddrAssocDevListの値にアクセスできます。

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

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

    pu16NwkAddrAssocDevList++;

}

このようにして、pu16NwkAddrAssocDevListに格納されている値を簡単に繰り返すことができます。

于 2012-07-30T16:34:00.170 に答える