[经验分享] const关键字

[复制链接]
4510|28
10299823 发表于 2024-4-15 11:44 | 显示全部楼层
如果在指针和类型之间:const int *p; 指针 p 指向的数据不能改变,指针本身可以改变。
如果在类型和指针之间:int const *p; 指针 p 本身不能改变,指针指向的数据可以改变。
如果在指针后面:int * const p; 指针 p 指向的地址不能改变,指针指向的数据可以改变。
alvpeg 发表于 2024-4-15 21:50 | 显示全部楼层
int const p; // 指针可以改变,指向的整型数据不能改变
这里const修饰的也是p,意味着指针指向的整型数据是常量,不能进行二次赋值。但是指针本身可以改变,可以指向其他内存地址。
jimmhu 发表于 2024-4-16 14:57 | 显示全部楼层
const关键字在这三种情况下修饰的是不同的变量,第一种和第二种情况下,const修饰的是指针指向的数据,即*p;第三种情况下,const修饰的是指针本身,即p。理解const关键字的使用方法有助于我们编写更加安全和稳定的代码。
abotomson 发表于 2024-4-16 20:23 | 显示全部楼层
const 关键字出现在指针变量声明中,它的含义取决于它的位置
51xlf 发表于 2024-4-17 16:18 | 显示全部楼层
const int *p;
这里,const 修饰的是 int,即指针 p 所指向的整型数据是常量。你可以改变 p 指向不同的地址,但不能改变 p 当前指向的整数值。
换句话说,*p = some_value; 是非法的(会导致编译错误),但 p = &some_other_int; 是合法的。
1988020566 发表于 2024-4-20 11:54 | 显示全部楼层
指针p本身可以改变,可以指向其他整型数据。注意,这种写法与第一种写法是等价的,只是为了强调const修饰的是指针指向的对象。
sdlls 发表于 2024-4-20 21:23 | 显示全部楼层
const int *p; 在这个声明中,const 关键字出现在类型说明符 int 之前,这意味着指针 p 指向的地址内的数据是常量,即 *p 的值不能改变,但指针 p 本身(即内存地址)可以改变,因为它指向的地址可以被重新指向其他地址。
朝生 发表于 2024-5-10 14:17 | 显示全部楼层
Const 增强了代码的可读性,并向读者传达了有用的信息
芯路例程 发表于 2024-5-25 14:20 | 显示全部楼层
提高代码的可读性,并向读者传达有用的信息
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部