PBYTE和BYTE*有什么区别

What is the difference between PBYTE and BYTE*?

本文关键字:什么 区别 BYTE PBYTE      更新时间:2023-10-16

就像Windows数据类型说PBYTE只是一个指向BYTE的指针,那么声明BYTE*PBYTE之间的c++有什么区别?另外PBYTELPBYTE有什么区别?L代表LONG吗?

在 PBYTE 和 BYTE 是 typedefs 的命名约定中,PBYTE 是指向 BYTE 的指针。 因此,PBYTE 和 BYTE * 之间没有有意义的区别(除非您一次声明多个变量。

所以

PBYTE x, y;

声明两个指针,但

BYTE *x, y;
将 x 声明为指针

,将 y 声明为 BYTE(有必要使用加法星号使 y 成为指针)。 这种事情是错误的常见来源 - 尽管当按预期使用变量时,编译器通常会快速检测到这些错误。

对于支持多种指针大小(例如近、远、大)的实现,LPBYTE 有时意味着远指针。 这在标准C++(一个内存模型)中毫无意义。 然而,一些较旧的架构(例如较旧的IBM兼容PC)具有分段内存架构,不同类型的内存由不同类型的芯片提供,并且需要不同的指针类型来寻址它们。 进行虚拟化的现代操作系统将这种事情抽象化。

根据Windows数据类型页面,这是简单的typedef BYTE *PBYTE,*LPBYTE;

你也可以发现这个页面很有用:windef.h。

PBYTE 和 BYTE* 之间没有区别。LPBYTE 是 BYTE far*。
什么是远指针