const void *a
定义了一个指针a,a可以指向任意类型的值,但它指向的值必须是常量。
在这种情况下,我们不能修改被指向的对象,但可以使指针指向其他对象。
例如:
const void *a;
*a=0x123;//是编译通不过的,因为*a中放的是个const值。const值是不能被改变的。
const int m=1;
const int n=2;
a=&m;
a=&n;
//编译可以通过。
void* const a
定义了一个const指针a,a可以指向任意类型的值,但a是指向某个对象的常量指针。
我们不能修改指针中存储的地址,但可以修改对象的值。
例如:
void* const a;
*a=0x123; //是没问题的
a=(void*)&b; //是不行的,因为a是const变量。如:
int m=1;
int n=2;
a=&m; //编译不成功
a=&n; //编译不成功
const void *a中,const修饰的是*a;
void* const a中,const 修饰的是a。