c++ - reinterpret_cast< > 从一个结构到另一个

标签 c++ casting

我正在检查一个 win32 程序,我发现部分代码包含 reinterpret_cast<>从一种结构到另一种结构。发生了什么

PKT_HEADER* pPktHeader = reinterpret_cast<PKT_HEADER*>( buffer );

pPktHeaderbuffer是两个结构指针。

我的问题是这里发生了什么?

最佳答案

迂腐地说,它是将一个指针转换为另一个指针,而不是将一种结构转换为另一种结构。在大多数环境中,无论对象是什么,指向对象的指针都是相同大小的 - 所以这可行。

它告诉编译器假定缓冲区实际上包含一个 PKT_HEADER。如果是这样,那么它应该可以正常工作。如果 buffer 包含不同的数据结构,那么使用 pPktHeader 将是未定义的行为,任何事情都可能发生。

关于c++ - reinterpret_cast< > 从一个结构到另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30894320/

相关文章:

使用预处理器指令生成 C++ 类

c++ - 有没有一本使用 C++ 编写控制台/终端应用程序的书?

c# - 为什么转换为一个字节然后立即返回一个 int?

c++ - 将 int 类型转换为 double C++

c++ - 查找数组中某些元素的大小?

c++ - 如何使用逗号将一个字符串分成两个字符串,并存储字符串? (C++)

c++ - 让 Sprite 跟随鼠标,使用 View 时出现奇怪的故障

C# 如何在转换 ToString() 之前检查是否有任何值

c# - 什么时候应该使用隐式转换?

c# - 将 Collection<T> 转换为接口(interface) - 为什么它不起作用?