C++常量指针声明 const关键字位置区别(常量.指针.区别.关键字.声明...)

wufei123 发布于 2025-09-02 阅读(4)
const在左表示指向常量,在右表示指针常量,两边都有则两者皆不可变,关键看const相对于*的位置。

c++常量指针声明 const关键字位置区别

在C++中,const关键字的位置决定了指针和它所指向的数据哪个是常量,理解这一点对正确使用常量指针非常重要。虽然写法不同,但它们的含义有明显区别。

const在星号左边:指向常量的指针 当const出现在*的左侧时,表示指针指向的数据是常量,不能通过该指针修改数据,但指针本身可以指向其他地址。

例如:

const int* ptr;
int const* ptr;
这两种写法等价,都表示ptr是一个指向int类型常量的指针。你可以修改ptr让它指向别的变量,但不能通过*ptr修改它指向的值。

示例:

int a = 10;
int b = 20;
const int* ptr = &a;
*ptr = 30; // 错误:不能修改指向的数据
ptr = &b; // 正确:可以改变指针指向

const在星号右边:常量指针 当const出现在*的右侧时,表示指针本身是常量,即指针的地址不能改变,但可以通过指针修改它指向的数据。

写法为:

int* const ptr;
这表示ptr是一个常量指针,必须在声明时初始化,并且之后不能再指向其他地址。

示例:

int a = 10;
int b = 20;
int* const ptr = &a;
*ptr = 30; // 正确:可以修改a的值
ptr = &b; // 错误:不能改变指针指向

const在星号两侧:指向常量的常量指针 如果const同时出现在*的两边,表示指针本身不能变,指向的数据也不能通过该指针修改。

写法为:

const int* const ptr;
int const* const ptr;
这是最严格的限制。指针初始化后既不能改变指向,也不能修改所指向的值。

示例:

int a = 10;
int b = 20;
const int* const ptr = &a;
*ptr = 30; // 错误:不能修改数据
ptr = &b; // 错误:不能修改指针

判断技巧:从右往左读声明。比如

const int* const ptr
,可以理解为“ptr是一个const指针,指向一个int的const值”。

基本上就这些,关键在于const相对于*的位置。记清楚这个规则,就能准确声明需要的指针类型。

以上就是C++常量指针声明 const关键字位置区别的详细内容,更多请关注知识资源分享宝库其它相关文章!

标签:  常量 指针 区别 

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。