C++ 引用和指针
2016-09-12 22:11
274 查看
引用
对象的别名,始终与相应类型的对象绑定在一起,必须进行初始化;只可以改变引用对象的值,而不可以改变引用的方向;使用安全,不为空,并且使用更加简单优雅。//eg: int i = 1; int & ri = i;
指针
不需要一定进行初始化,可为空,指针值为指向对象的地址,可以改变指向的对象;使用存在危险,比如说出现“野指针”的情况,使用也没有引用简洁。//eg: int i = 1; int *pi = &i;
易混淆点: const 关键字
指向常量的指针(pointer to const)和对常量的引用(reference to const): 均表示指向的对象为常量,不可以通过其间接修改指向对象的值//eg: int i = 1; const int *pi = &i; const int &ri = i; *pi = 2;// 报错,常量对象不可以修改 ri = 2; //报错,常量对象不可以修改 cout<<&ri<<endl; cout<<pi<<endl; //输出的值,即地址是一样的,指向i的地址
常量指针(const pointer)和常量引用:指针常量表示指针是固定不变的,即指向的对象地址是不变的,因此必须在定义时初始化,而对于引用来说,本来就是“常量的”,即不可以改变引用的绑定方向。
//eg: int i = 1; int * const pi;//报错,必须初始化 int * const pi = &i;//正确
指向常量对象的常量指针和常量引用常量:常量引用常量同对常量的引用,而常量指针常量则表示该指针是固定常量的,指向的值也是常量不变的,也必须进行初始化。
//eg: int i = 1; const int * const pi = &i;
顶层const和底层const
顶层const指的是对象本身是一个常量,如常量指针(const pointer)或常量的算是类型或类等,底层const指的是指针和引用等复合类型指向的对象是常量,当执行对象拷贝时,顶层const不受什么影响,而底层const存在较多限制,一般来说,非常量可以转化为常量,反之不行。//eg: int i = 0; int *const top_pi = &i;//顶层const const int * low_pi = &i;//底层const
相关文章推荐
- C++中引用与指针的比较
- [语法比较][指针/引用]Lava和C/C++语法比较
- java中的引用和C++中的指针的区别
- C++中的临时对象,对临时对象的引用,和临时对象的指针
- C++中的临时对象,对临时对象的引用,和临时对象的指针
- C++中指针(pointer)和引用(reference)的区别和联系
- 引用与指针.C++
- C++引用与指针的比较
- C++引用与指针的比较
- More Effective C++:指针与引用的区别
- c++的中的指向类的指针和引用的比较
- C++学习体会--变量,指针,引用
- C++指针和引用(摘录)
- C++指针与引用【转贴】
- C++引用与指针的比较
- More Effective C++:指针与引用的区别
- C++点滴:向函数中传递指针和传递指针的引用的区别:
- c++中指针,指针的引用,指针的指针的区别
- C++中指针和引用的区别
- C++引用与指针的比较