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

来源:互联网 发布:and电讯淘宝真假 编辑:程序博客网 时间:2024/05/09 05:40

对于 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' 使用正确,其有开辟的内存空间,可以作为左值改变。