似乎'const BYTE *'和'之间存在差异'const LPBYTE',当我编译下面的代码时(只是一个例子):
void Test(const BYTE * c,const LPBYTE d) {
c++; // OK
*c++; // OK
d++; // ERROR
*d++; // ERROR
}
我在visual studio上得到“你不能分配给const的变量”,我在代码块上尝试了它,并且我得到了“只读参数'd'的增量”。我也使用了typedef BYTE* bytes
,但也遇到了同样的错误。
这里有什么,为什么我可以修改'c'而不是'd'?
答案 0 :(得分:6)
你应该知道以下两种数据类型的区别('*'的确切位置):
char const *variable_1;
char *const variable_2;
“variable_1”是指向只读字节的指针。但是“variable_1”本身不是只读的。
“variable_2”是指向字节的只读指针。但是它指向的字节不是只读的。
这意味着:
variable_1 = &xxx; // OK
variable_2 = &xxx; // Error
*variable_1 = yyy; // Error
*variable_2 = yyy; // OK
现在上述两种类型的含义如下:
const BYTE * == BYTE const *
const LPBYTE == BYTE * const
答案 1 :(得分:1)
const LPBYTE
是指向字节的常量指针,而不是指向const byte
的指针。您只需要了解*
职位