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

请教:代码中打印那一行里面的那2个pst的值为什么不同?
腰包不鼓,小小积分奉上而已,谢谢!
------解决方案--------------------
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]
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]