由于某种原因,第一个参数的双指针引用始终保持为0,尽管对于第二个参数似乎正确。我究竟做错了什么?谢谢。
unsigned short GetData(unsigned char **pbAdr1, unsigned char **pbAdr2)
{
printf("Data1: %x", par); //displays 6957f0 ==> OK
*pbAdr1 = (unsigned char*)par;
*pbAdr2 = (unsigned char*)par;
printf("Data2: %x, %x", *pbAdr1, *pbAdr2 ); //displays 0, 6957f0 ==> why 0 for *pbAdr1?
}
答案 0 :(得分:2)
*pbAdr1
是一个指针。您正在提供指向%x
的{{1}}参数的指针,该参数期望printf
并且是未定义的行为。如果指针的sizeof与unsigned int
的大小相同,则该代码可能“起作用”。但是如果它们不同,则该代码可能“无效”。
我建议您使用正确的格式说明符
int