顶层跟底层是针对指针的 很简单 针对指针可以修改及不能修改;
指针可以改变 指针指向的内容不可以变为底层const
指针不可以改变 指针指向的内容可以改变为顶层const
怎么识别顶层const 底层const:
const优先修饰左边的值 如果左边没有值 就修饰右边的值
例如 const int* p; 左边没有值所以 const 修饰int, int const * p; const 左边有值 所以const 也是修饰int 所以这两个表达式的内容都是 指针指向的内容不可以改变 指针可以改变 所以为顶层const ;
int d = 13;
int d1 = 14;
const int* p1 = &d;
p1=&d1;//正确,可以修改p2指针的只想内容
*p1=d1;//报错 *p1表达式必须是可以修改的左值例如 int * const p2;const 左边的值为* ,所以该表达式为底层const 指针p1的值是不能改变的;但是指针指向的内容可以修改 可以可以使用*p1 解引用修改p1指针指向的内容
int* const p2=&d;
*p2 = d1;//正确,可以修改
p2 = &d1;//错误, p2表达式必须是可以修改的左值例如 int const * const p3; 该表达式const ,第一个const 是代表的底层const 第二个const 代表的底层const 该表达式既有底层const 也有顶层const,所以指针及指针指向的内容都不允许改变
int const* const p3=&d;
*p3 = d1;//错误, *p3表达式必须是可以修改的左值
p3 = &d1;//错误, p3表达式必须是可以修改的左值
文章详细阐述了C++中指针的顶层const和底层const概念。顶层const表示指针本身不可变,但可改变其指向的内容;底层const则表示指针指向的内容不可变,而指针可以改变。同时,文中通过示例解释了如何识别和使用这两种const类型,并举例说明了当两个const都存在时的情况。
2211

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



