在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; // 正确:可以改变指针指向
写法为:
int* const ptr;这表示ptr是一个常量指针,必须在声明时初始化,并且之后不能再指向其他地址。
示例:
int a = 10;
int b = 20;
int* const ptr = &a;
*ptr = 30; // 正确:可以修改a的值
ptr = &b; // 错误:不能改变指针指向
写法为:
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关键字位置区别的详细内容,更多请关注知识资源分享宝库其它相关文章!
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。