在编译折叠代码(仅举一个例子)时,“const字节*”和“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’?
发布于 2014-02-09 19:53:27
您应该知道以下两种数据类型的不同(“*”的确切位置):
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发布于 2014-02-09 19:09:33
const LPBYTE是指向字节的常量指针,而不是指向const byte的指针。你只需要知道*的位置
https://stackoverflow.com/questions/21663465
复制相似问题