发新帖我要提问
12
返回列表
打印
[经验分享]

const关键字

[复制链接]
楼主: hudi008
手机看帖
扫描二维码
随时随地手机跟帖
21
10299823| | 2024-4-15 11:44 | 只看该作者 回帖奖励 |倒序浏览
如果在指针和类型之间:const int *p; 指针 p 指向的数据不能改变,指针本身可以改变。
如果在类型和指针之间:int const *p; 指针 p 本身不能改变,指针指向的数据可以改变。
如果在指针后面:int * const p; 指针 p 指向的地址不能改变,指针指向的数据可以改变。

使用特权

评论回复
22
alvpeg| | 2024-4-15 21:50 | 只看该作者
int const p; // 指针可以改变,指向的整型数据不能改变
这里const修饰的也是p,意味着指针指向的整型数据是常量,不能进行二次赋值。但是指针本身可以改变,可以指向其他内存地址。

使用特权

评论回复
23
jimmhu| | 2024-4-16 14:57 | 只看该作者
const关键字在这三种情况下修饰的是不同的变量,第一种和第二种情况下,const修饰的是指针指向的数据,即*p;第三种情况下,const修饰的是指针本身,即p。理解const关键字的使用方法有助于我们编写更加安全和稳定的代码。

使用特权

评论回复
24
abotomson| | 2024-4-16 20:23 | 只看该作者
const 关键字出现在指针变量声明中,它的含义取决于它的位置

使用特权

评论回复
25
51xlf| | 2024-4-17 16:18 | 只看该作者
const int *p;
这里,const 修饰的是 int,即指针 p 所指向的整型数据是常量。你可以改变 p 指向不同的地址,但不能改变 p 当前指向的整数值。
换句话说,*p = some_value; 是非法的(会导致编译错误),但 p = &some_other_int; 是合法的。

使用特权

评论回复
26
1988020566| | 2024-4-20 11:54 | 只看该作者
指针p本身可以改变,可以指向其他整型数据。注意,这种写法与第一种写法是等价的,只是为了强调const修饰的是指针指向的对象。

使用特权

评论回复
27
sdlls| | 2024-4-20 21:23 | 只看该作者
const int *p; 在这个声明中,const 关键字出现在类型说明符 int 之前,这意味着指针 p 指向的地址内的数据是常量,即 *p 的值不能改变,但指针 p 本身(即内存地址)可以改变,因为它指向的地址可以被重新指向其他地址。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则