指向地址或指向值的指针的常量指针

时间:2014-03-11 17:51:36

标签: c pointers constants

int const *aconst int *a是否意味着" a是指向常数值的整数指针"和" a分别是指向常量地址"的指针,或者反之亦然?

这是在接受采访时向我询问的。在阅读了很多关于它的内容之后,我仍然对此非常困惑。

3 个答案:

答案 0 :(得分:1)

int const *a;

相当于:

const int *a;

表示a是指向const int对象的指针。

答案 1 :(得分:1)

const跳过类型关键字(int)时,含义不会改变。

const跳过*

时,含义会发生变化
const int *a; /* The int is const */
int const *b; /* The int is const */
int *const c; /* The pointer is const */

答案 2 :(得分:0)

  • const int *a - a是可写的(可以指向不同的东西),*a不可写(不能写入指向的东西)
  • int const *a - 与上述相同
  • int * const a - a不可写(不能指向不同的东西),*a是可写的(可以写入指向的东西)
  • const int * const a - a*a都不可写
  • int const * const a - 与上述相同

如果您将前两个案例视为

const int (*a)
int const (*a)

很明显const正在修改int类型说明符;我们指的是常数整数

如果您将第三个案例视为

int (* const a)

然后const正在修改指针声明符*a;我们有一个常量指针到一个整数。

然后你将最后两个案例读作

(const int) (* const a)
(int const) (* const a)

然后很明显我们有一个const修改类型说明符而另一个修改指针,所以我们有一个常量指针常量整数