C++简单类型转换,该如何处理

C++简单类型转换
DWORD d = *(DWORD*)str;//str = "ABC"
0042B3D5 mov eax,dword ptr [str] //eax = 4705456
0042B3D8 mov ecx,dword ptr [eax] //ecx = 4407873
0042B3DA mov dword ptr [d],ecx //d = 4407873
DWORD s = (DWORD)str;
0042B3DD mov eax,dword ptr [str] //eax = 4705456
0042B3E0 mov dword ptr [s],eax //s = 4705456


这两种转换方式 什么区别,为什么过一个ecx值就不一样了

------解决方案--------------------
一个是类型强转,一个是指向的内容强转后赋值,不是一回事
------解决方案--------------------
探讨

引用:

一个是类型强转,一个是指向的内容强转后赋值,不是一回事


是不是可以这样理解啊
DWORD d = *(DWORD*)str;//把str作为一个存储DWORD的一个指针,把这个指针指向的内容付给d
DWORD s = (DWORD)str;//把str作为一个DWORD类型的值,付给s

------解决方案--------------------
楼主你可能没看清楚,两段汇编代码不只是中间哪行的区别,
各种的最后一行也不一样,一个是用的ecx,一个用的是eax

另外:ABC 由低到高分别为 0x414243 转换为dword后 由高到低就是 ox434241 = 4407873

至于第二个就不一定了,那是个地址,再这样转一次还可以得出来 DWORD s1 = s *(DWORD*)s;