C++ const类型引用做函数参数
2013-06-05 23:58
399 查看
对于 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' 使用正确,其有开辟的内存空间,可以作为左值改变。
但指针形式时,指针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' 使用正确,其有开辟的内存空间,可以作为左值改变。
相关文章推荐
- C++关于参数为const引用类型的函数调用参数成员函数的一个问题
- c++函数参数类型-引用
- c++函数参数类型-引用、指针、值
- c++函数参数类型-引用、指针、值
- 【转】C++函数——指针和引用类型的参数传递
- c++函数参数类型-引用
- c++函数参数类型-引用
- c++函数参数类型-引用
- C/C++的区别(默认值、内联函数、函数重载、const、引用、参数、返回值)
- c++函数参数类型-引用
- c++函数参数类型-引用
- 【C/C++学院】(4)c++开篇/类和对象/命名空间/类型增强/三目运算符/const专题/引用专题/函数增强
- c++函数参数类型-值,指针,引用
- const类型参数的对象引用和const成员函数
- JavaSE8基础 String是特殊的引用类型,在函数的参数传递中只能把它当做 值类型来看待
- C++const对象 常量数据 常量成员函数 const指针 const引用
- C# 引用类型作为函数参数时
- C或C++中函数的参数传递——值传递、指针传递、引用传递
- [C++学习历程]基础部分 C++中的函数中的值参数、地址参数、引用参数实际例子
- [收藏]C++ Tips(9)--函数参数中的const