C语言中的const一直是C语言初学者心中的痛,这是因为const在不同位置有不同作用,在不同情景有不同角色。这让初学者摸不清头脑。今天和大家一起研究一下const,让它的每个角色都“深入人心”!
const和指针的配合是噩梦!
你能分辨得清这些声明么:
- const int *A;
- int const *A;
- int *const A;
- const int *const A;
如果有点犯晕的话,那就先给出它们的讲解,然后继续看后面的情景分析吧。
- const int *A; //修饰指向的对象,A可变,A指向的对象不可变
- int const *A; //修饰指向的对象,A可变,A指向的对象不可变
- int *const A; //修饰指针A, A不可变,A指向的对象可变
- const int *const A; //指针A和A指向的对象都不可变
记住以下的话:
靠近谁约束谁,对于情况1和情况2 靠近 *A,约束 *A, 对于情况3 告诉A 约束A。 或者说const在 * 前约束指针指向的值,在*后约束指针本身。