因为windows数据类型说PBYTE
只是指向BYTE
的指针,所以c++
与BYTE*
之间的区别是PBYTE
? PBYTE
和LPBYTE
之间有什么区别? L
代表LONG
?
答案 0 :(得分:4)
在PBYTE和BYTE是typedef的命名约定中,PBYTE是指向BYTE的指针。所以PBYTE和BYTE *之间没有任何有意义的区别(除非你一次声明多个变量。
所以
PBYTE x, y;
声明两个指针,但
BYTE *x, y;
将x声明为指针,将y声明为BYTE(需要使用加星号来使y成为指针。)。这类事情是常见的错误来源 - 虽然当变量按预期使用时,编译器通常会很快检测到错误。
对于支持多个指针大小(例如,near,far,huge)的实现,LPBYTE有时意味着远指针。这在标准C ++(一种内存模型)中毫无意义。然而,需要一些具有分段存储器架构,具有由不同类型的芯片提供的不同类型存储器以及不同指针类型的较旧架构(例如较旧的IBM兼容PC)来解决它们。做虚拟化的现代操作系统将这种事情抽象出来。
答案 1 :(得分:2)
根据Windows data types page,这很简单typedef BYTE *PBYTE,*LPBYTE;
此外,您可能会发现此页面很有用:windef.h。
答案 2 :(得分:0)
PBYTE和BYTE *之间没有区别。 LPBYTE是BYTE远* 什么是far pointer