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; nt n=2;
a=&m; a=&n;//編譯不成功。
可以這么說,const void *a;中const修飾的是*a。在void* const a中,const 修飾的是a。