请教结构体指针打印的问题?谢谢!
0040108B push edx
0040108C mov eax,dword ptr [ecx]
0040108E push eax
0040108F mov ecx,dword ptr [ebp-0Ch]
00401092 push ecx
00401093 push offset string "pst:0x%08x, pst[0]:0x%08x, pst:0"... (0042201c)
00401098 call printf (00401140)
0040109D add esp,14h
printf函数4个参数,push了5次。
第一次:pst
第二次:0x0000BBBB
第三次:0xAAAA0000
第四次:pst
第五次:"pst:0x%08x, pst[0]:0x%08x, pst:0"
怎么会是五次呢?
[解决办法]
第三个参数,即使你随便写,不写pst一样会打印出b的值的。以前代码就是为证。
#include<stdio.h>
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,pst:0x%08x\n", pst, pst[0],pst[2],pst);
return 0;
}