int const *a
和const int *a
是否意味着" a是指向常数值的整数指针"和" a分别是指向常量地址"的指针,或者反之亦然?
这是在接受采访时向我询问的。在阅读了很多关于它的内容之后,我仍然对此非常困惑。
答案 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
修改类型说明符而另一个修改指针,所以我们有一个常量指针到常量整数 。