int a = 10;
1) const int* b = &a;
2) int const *c = &a;
3) int* const d = &a;
4) const int* const e = &a;
// 1),2) 指针所指向的内容为常量这种情况下不允许对内容进行更改操作
*b = 20;
*c = 30;
// 3) 指针是常量这种情况下不能对指针本身进行更改操作,如d++是错误的
d++;
// 4) 指针本身和指向的内容均为常量
一般来说,你可以在头脑里画一条垂直线穿过指针声明中的星号(*)位置,如果const出现在线的左边,指针指向的数据为常量;如果const出现在线的右边,指针本身为常量;如果const在线的两边都出现,二者都是常量。参考《Effective c++》Item21。
本文详细解析了C++中const修饰符的不同应用场景,包括指针所指向的内容为常量、指针本身为常量及两者同时为常量的情况,并通过实例展示了各种情况下的使用限制。
2470

被折叠的 条评论
为什么被折叠?



