You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

三种指针声明的区别:int* const、const int*、int const*

C++中三种const指针声明的区别

先明确核心区分规则:看const和*的相对位置——

  • const在*右侧:指针本身是常量,不能改变指向的地址
  • const在*左侧:指针指向的内容是常量,不能通过该指针修改内容

逐个拆解你的三个声明:

1. int *const ptr1;

这才是你说的常量指针:指针本身的地址是固定的,一旦初始化后就不能再指向其他变量,但可以通过它修改指向的变量的值。
示例代码:

int a = 10;
int *const ptr1 = &a; // 必须初始化,因为指针本身是常量
*ptr1 = 20; // 合法,修改指向的内容
// ptr1 = &b; // 非法,不能改变指针的指向

2. const int* ptr2; 和 3. int const* ptr3;

这两个是完全等价的,都是指向常量的指针:指针本身可以自由指向不同的变量,但不能通过这个指针去修改指向的变量的值。
示例代码:

int a = 10, b = 20;
const int* ptr2 = &a;
// *ptr2 = 30; // 非法,不能通过ptr2修改a的值
ptr2 = &b; // 合法,指针可以指向另一个变量

int const* ptr3只是写法不同,语义和const int* ptr2完全一致,本质都是限定指针指向的内容不可修改。

内容的提问来源于stack exchange,提问作者Zolo_Ryan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 07:25:32