简单记忆方法:
const为常量,*为指针*在前const在后,则为指针常量:* const地址不变const在前*在后,则为常量指针:const *值不变
指针常量(pointer to constant):指针指向的地址为常量
-
指针常量指向的内存地址是不可变的。
-
定义指针常量时,必须进行初始化,并且不能再修改指针的值(即指针的指向不可变)。
-
通过指针常量可以修改所指向的对象的值。
示例代码:
int value = 1; int* const ptr = &value; // ptr是指针常量,指向value的地址 *ptr = 100; // 正确,可以通过指针常量修改value的值 ptr = nullptr; // 错误,无法修改指针常量指向的地址
常量指针(constant pointer):指针指向"常量"对象的地址
-
定义常量指针时,可以不进行初始化,也可以在后续进行初始化。
-
常量指针仅要求不能通过该指针来修改该对象的值,未规定该对象的值不能通过其他途径改变。
-
常量指针指向的变量不一定是
const,声明其为常量指针只是说明不能通过该指针修改指向变量的值,但如果变量本身并非常量,则仍可以通过其他途径修改。 -
示例代码:
int value = 1; const int* ptr = &value; // ptr是常量指针,指向value的地址 int const* ptr = &value; // 两种写法都可以 *ptr = 100; // 错误,不能通过常量指针修改value的值 ptr = nullptr; // 正确,可以修改常量指针的值,使其指向其他地址
指向常量的常指针(constant pointer to constant):
-
指针所指对象的值和地址都不能改变
-
示例代码:
int value = 1; const int* const ptr = &value; //内容与地址均不可改变 *ptr = 100; // 错误,不能修改其值 ptr = nullptr; // 错误,不能修改其地址
如果这篇文章对你有所帮助,渴望获得你的一个点赞!


文章详细介绍了C++中const关键字用于指针的情况,包括指针常量(不能改变指针指向的地址)、常量指针(不能通过指针修改所指对象的值)以及指向常量的常指针(内容和地址都不变)。指针常量需要初始化且不可再修改,而常量指针则允许修改指针本身的值。

1561

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



