PBYTE 和 BYTE* 有什么区别?

Dan*_*gen 1 c++

正如 windows 数据类型所说PBYTE的只是一个指向 a 的指针,BYTE那么c++声明 aBYTE*PBYTE? PBYTEAND 和有LPBYTE什么区别?是L代表LONG

Rob*_*Rob 5

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

所以

PBYTE x, y;
Run Code Online (Sandbox Code Playgroud)

声明两个指针,但是

BYTE *x, y;
Run Code Online (Sandbox Code Playgroud)

将 x 声明为指针,将 y 声明为 BYTE(需要使用附加星号来制作 ya 指针。)。这类事情是错误的常见来源——尽管当按预期使用变量时,编译器通常会很快检测到这些错误。

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