C中以下三个指针声明之间有什么区别:
void * const myPointer1;
void const *myPointer2;
const void *myPointer3;
Run Code Online (Sandbox Code Playgroud)
哪一个用于防止:
myPointer = somethingElse;
Run Code Online (Sandbox Code Playgroud)
从右到左阅读规则:
void * const myPointer1;
Run Code Online (Sandbox Code Playgroud)
myPointer1是一个const指针void.
void const *myPointer2;
Run Code Online (Sandbox Code Playgroud)
myPointer2是指向a的指针const void.
const void *myPointer3;
Run Code Online (Sandbox Code Playgroud)
myPointer3是指向a的指针void const.
结论:
myPointer1你正在寻找什么 - 它是一个const指针,所以它的价值无法修改myPointer2并且myPointer3是一回事myPointer2并且myPointer3是没有意义的 - 解除引用是void*没有意义的