const关键字的位置

lms*_*lms 7 c

C中以下三个指针声明之间有什么区别:

void * const myPointer1;
void const *myPointer2;
const void *myPointer3;
Run Code Online (Sandbox Code Playgroud)

哪一个用于防止:

myPointer = somethingElse;
Run Code Online (Sandbox Code Playgroud)

Jon*_*Jon 8

从右到左阅读规则:

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*没有意义的