Tom's Blog

写一些有意思的东西。

0%

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

C中常常可以看到诸如const int *const int * constint const *这样的写法。这些语法外表相似,实际却有很大不同。为了分辨它们,可以用从右向左阅读的技巧(原帖地址:https://stackoverflow.com/questions/1143262/what-is-the-difference-between-const-int-const-int-const-and-int-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

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