如何分辨C中的指针常量和常量指针

C 语言中常常可以看到诸如 const int *const int * constint const * 这样的写法。这些语法外表相似,实际却有很大不同。为了分辨它们,可以用从右向左阅读的技巧。

  • int * - pointer to int,指针指向整数
  • int const * - pointer to const int,指针指向常量整数
  • int * const - const pointer to int,常量指针指向整数
  • int const * const - const pointer to const int,常量指针指向常量整数

第一个 const 和类型可以互换:

  • const int * == int const *
  • const int * const == int const * const

如此一来,就算忘记了常量指针指针常量谁是谁也没有关系,通过字面上的顺序就能分辨指针的不同。确实是一个很不错的方法!

参考文章

  1. https://stackoverflow.com/questions/1143262/what-is-the-difference-between-const-int-const-int-const-and-int-const