LPCVOID 部类的参数值被修改

LPCVOID 类型的参数值被修改
C++中 LPCVOID的定义为:typedef CONST void far *LPCVOID;,根据其定义可以看出此类型的指针指向的值是不能改的,但实际上可以被修改(值和指针都可以被改,那const有什么意义呢),这是什么原因?

C/C++ code

#include "stdafx.h"
#include "public.h"

void constVarTest(LPCVOID pcNum)
{
    *(int*)pcNum = 2; //LPCVOID虽有const修饰但还是可以修改其值
    printf("in function a=%d\n", *(int*)pcNum );
}

int main(int argc, char* argv[])
{
    int a = 1;

    printf("old a: %d\n", a);
    constVarTest(&a);
    printf("new a: %d\n", a);

    return 0;
}

//public.h
typedef const void *LPCVOID;




------解决方案--------------------
const只是编译器语法,都被你强转了还有什么好说的。
------解决方案--------------------
用const去修饰void*确实有点费解,因为void*总是要被强制转换才能用。
------解决方案--------------------
学习了,谢谢楼主!
------解决方案--------------------
在强制转换面前,const也无能为力啊,除非你传进来的内存地址是只读的。
形参表里const更多的是提示作用,加上后告知客户你的实现不会修改内存,而不是你修改不了。还一个,你要传递常量字符串之类的进来时,形参必须加const,此时你是无法修改的。