C++ const类型引用做函数参数

对于 int const &a = 10 与 const  int &a = 10 与 int const *a= 10 与const int *a= 10 性质是一样的,即变量a所指向的值不能改变。

但指针形式时,指针a是可以改变的,可以指向其他同类型的地址。

int * const a = 10 形式:说明指针a是不能改变的,不能指向其他同类型地址,但是当前指针a指向的地址值是不能被改变的。

同理:当const修饰的参数主要控制地址指向的值不变时,如const int *a = 10;在函数体内,a指向的值是不会变化的,地址可变

当const修饰的参数主要控制指针不变时,如 int * const a = &b;在函数体内,指针a的值是不能变化的,但指针a指向的地址值是可以变化的,如*a = 200;


当定义指针指向名词性字符串时,如:char* p = "hello", 此时p相当于名词性const的,不能试图改变值,指针指向的”hello“在数据段,不能改变,如:p[0]  ='X';

但如果用数组定义,如:char p[] = "hello" 则 p[0] = 'x' 使用正确,其有开辟的内存空间,可以作为左值改变。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值