请问结构体指针打印的有关问题?多谢

请教结构体指针打印的问题?谢谢!

typedef struct _test_B_s {
    unsigned int u32_a;
    unsigned int u32_b;
}test_B_t;
 
int main(int argc, char *argv[])

    test_B_t st_a;
    memset(&st_a, 0, sizeof(st_a));
    st_a.u32_a = 0xaaaa0000;
    st_a.u32_b = 0x0000bbbb;
    test_B_t *pst = &st_a;

    printf("pst:0x%08x, pst[0]:0x%08x, pst:0x%08x\n", pst, pst[0], pst);
return 0;
}

打印输出:
请问结构体指针打印的有关问题?多谢

请教:代码中打印那一行里面的那2个pst的值为什么不同?
腰包不鼓,小小积分奉上而已,谢谢!

C struct 指针

------解决方案--------------------
mov         ecx,dword ptr [ebp-18h]
mov         edx,dword ptr [ecx+4]
push        edx
mov         eax,dword ptr [ecx]
push        eax
mov         ecx,dword ptr [ebp-18h]
push        ecx
push        offset string "......"
call        printf ()

VC6下编译成这样了,先压栈的是pst+4,即pst.u32_b,再压栈pst.u32_a,最后压栈的是pst,不明白怎么编译成这样了,谁来解释下。
------解决方案--------------------
上面第五次push写错了。
printf("pst:0x%08x, pst[0]:0x%08x, pst:0x%08x\n", pst, pst[0], pst);
汇编代码如下:
00401081   mov         eax,dword ptr [ebp-0Ch]
00401084   push        eax
00401085   mov         ecx,dword ptr [ebp-0Ch]
00401088   mov         edx,dword ptr [ecx+4]