c:按引用传递双第一指针保持为0

时间:2019-02-02 10:04:24

标签: c

由于某种原因,第一个参数的双指针引用始终保持为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?
}

1 个答案:

答案 0 :(得分:2)

*pbAdr1是一个指针。您正在提供指向%x的{​​{1}}参数的指针,该参数期望printf并且是未定义的行为。如果指针的sizeof与unsigned int的大小相同,则该代码可能“起作用”。但是如果它们不同,则该代码可能“无效”。

我建议您使用正确的格式说明符

int