C++中的const *与 * const:深入解析与区分

要区分const int*和int* const,关键在于理解const修饰的是谁。如果const在类型(如int)之前,那么它修饰的是指针所指向的内容;如果const在指针符号*之后,那么它修饰的是指针本身。

要区分const int*和int* const,关键在于理解const修饰的是谁。如果const在类型(如int)之前,那么它修饰的是指针所指向的内容;如果const在指针符号*之后,那么它修饰的是指针本身。

C++编程中,指针与const关键字的组合常常引发初学者的困惑。特别是当看到const int和int* const这两种声明时,很多人会感到迷惑不解。本文旨在深入解析这两种声明的含义,帮助读者准确区分它们。

C++中的const *与 * const:深入解析与区分

一、const int*(指向常量的指针)

首先,我们来看const int*这种声明。这里,const修饰的是int,即指针所指向的内容是不可变的。换句话说,这个指针可以指向不同的const int对象,但它不能修改任何它所指向的对象的值。

示例代码:

const int a = 10;
const int b = 20;
const int* p = &a; // 正确,p指向常量a
cout << "p指向的值:" << *p << endl; // 输出a的值,即10
p = &b; // 正确,p可以重新指向另一个常量b
//*p = 30; // 错误!不能通过p修改它所指向的值

二、int* const(常量指针)

接下来,我们分析int* const这种声明。在这里,const修饰的是指针本身,而不是它所指向的内容。这意味着这个指针在初始化后就不能再指向其他对象了,但它可以修改它所指向对象的值(前提是该对象本身不是常量)。

示例代码:

int x = 100;
int y = 200;
int* const q = &x; // 正确,q是一个常量指针,初始化为指向x
cout << "q指向的值:" << *q << endl; // 输出x的值,即100
//*q = 150; // 如果x本身不是const,则这里是正确的,现在*q(即x)的值为150
//q = &y; // 错误!常量指针q不能再指向其他对象

注意,在上述代码中,我们修改了q所指向的值(即*q = 150;),这是允许的,因为q是一个指向int的常量指针,而不是指向const
int的指针。但是,我们尝试让q指向另一个对象(即q = &y;),这是不允许的,因为q本身是一个常量指针。

三、总结与区分

要区分const int和int* const,关键在于理解const修饰的是谁。如果const在类型(如int)之前,那么它修饰的是指针所指向的内容;如果const在指针符号*之后,那么它修饰的是指针本身。

  • const int* p:p是一个指针,它可以改变指向,但不能修改它所指向的内容。
  • int* const q:q是一个常量指针,它指向的内容可以改变(如果内容本身不是常量),但q本身不能改变指向。

通过理解这两种声明的含义和用途,我们可以更加准确地使用指针和const关键字,编写出更安全、更可靠的C++代码。

©本文为清一色官方代发,观点仅代表作者本人,与清一色无关。清一色对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。本文不作为投资理财建议,请读者仅作参考,并请自行承担全部责任。文中部分文字/图片/视频/音频等来源于网络,如侵犯到著作权人的权利,请与我们联系(微信/QQ:1074760229)。转载请注明出处:清一色财经

(0)
打赏 微信扫码打赏 微信扫码打赏 支付宝扫码打赏 支付宝扫码打赏
清一色的头像清一色管理团队
上一篇 2024年3月11日 17:16
下一篇 2024年3月11日 17:18

相关推荐

发表评论

登录后才能评论

联系我们

在线咨询:1643011589-QQbutton

手机:13798586780

QQ/微信:1074760229

QQ群:551893940

工作时间:工作日9:00-18:00,节假日休息

关注微信