C++ 中的数据类型转换

Datatype casting in c++

我最近一直在使用演员表,但我实际上并不知道某些演员表是做什么的。这可能是一些非常基本的东西,但我就是不明白。

这些有什么区别?

*(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
  • *(DWORD*)VAR;VAR 转换为指向 DWORD 和 return 存储在那里的值的指针。
  • (DWORD*)VAR;VAR 转换为指向 DWORD.
  • 的指针
  • (DWORD)VAR;VAR 转换为 DWORD.
  • (DWORD)*VAR; 假定 VAR 是一个指针,检索存储在那里的值并将该值转换为 DWORD.

从右到左阅读它们

*(DWORD*)VAR;
- 阅读VAR(应该是一个指针)
- 转换为 "pointer to unsigned long"
- 取消引用(结果是无符号长左值)

(DWORD*)VAR;
- 阅读VAR(应该是一个指针)
- 转换为 "pointer to unsigned long"(结果是无符号长指针)

(DWORD)VAR;
- 阅读 VAR
- 转换为 "unsigned long"(结果为无符号长右值)

(DWORD)*VAR;
- 阅读VAR(应该是一个指针)
- 取消引用
- 转换为 "unsigned long"(结果为无符号长右值)