const void *a 相关问题
const void *a
关于 const void *a 看到有如下解释:
这是定义了一个指针a,a可以指向任意类型的值,但它指向的值必须是常量。
在这种情况下,我们不能修改被指向的对象,但可以使指针指向其他对象。
实际验证过程中发现如下问题:
int main(int argc, char const *argv[])
{
const void *a;
int b = 5;
a = &b;
cout << *((int*)a) << endl;
//*a = 123;
*((int*)a) = 123;
cout << *((int*)a) << endl;
return 0;
}
代码如上,a = &b后,a指向b,此时无法通过*a修改b的值,即*a = 123;会编译报错,这一点是ok的。
但为什么 *((int*)a) = 123; 就能通过呢?而且还成功修改了值(b的值并未被修改)。
还请各位大大解答一下,谢谢!