我最近一直在使用很多,但我实际上并不知道某些演员会做些什么。这可能是一些非常基本的东西,但我只是没有得到它。
这些有何不同?
*(DWORD*)VAR;
(DWORD)VAR;// changes VAR to DWORD
(DWORD*)VAR;//Changes pointer VAR to DWORD
(DWORD)*VAR;//Changes pointer VAR to DWORD
根据MSDN
const char *pCast = myStr; // or (const char *)myStr;
(DWORD*)VAR is the same as DWORD *VAR which is also the same as (DWORD)*VAR
答案 0 :(得分:0)
*(DWORD*)VAR;
将VAR
投射到指向DWORD
的指针并返回存储在那里的值。(DWORD*)VAR;
将VAR
投射到指向DWORD
。(DWORD)VAR;
将VAR
投射到DWORD
。(DWORD)*VAR;
假设VAR
是一个指针,检索存储在那里的值并将值转换为DWORD
。答案 1 :(得分:0)
从右到左阅读
*(DWORD*)VAR;
- 阅读VAR
(应该是指针)
- 施放到“指向无符号长”的指针
- 解除引用(结果是无符号长左值)
(DWORD*)VAR;
- 阅读VAR
(应该是指针)
- 强制转换为“无符号长指针”(结果是无符号长指针)
(DWORD)VAR;
- 阅读VAR
- 强制转换为“unsigned long”(结果是无符号长rvalue)
(DWORD)*VAR;
- 阅读VAR
(应该是指针)
- 解除引用
- 强制转换为“unsigned long”(结果是无符号长rvalue)