引用和指针的区别。
2014-08-10 23:15
246 查看
1 非空区别
任何情况下都不能使用空值的引用。指针可以。
比如下面的代码有问题。
2合法性区别
因为引用不能指向空值,所以不需要检测它的合法性。而指针可能指向空值,必须检查其合法性。比如下面代码
3可修改区别
指针可以被重新复制,指向另一个对象。但是引用一旦指向了一个对象,便从此"从一而终”.忠心啊。
4应用的区别根据是否以后可能修改为空或者不为空情况下选择使用。
任何情况下都不能使用空值的引用。指针可以。
比如下面的代码有问题。
void main() { char *pc = 0; // 设置指针为空值 char& rc = *pc; // 让引用指向空值 //cout << rc <<endl; }
2合法性区别
因为引用不能指向空值,所以不需要检测它的合法性。而指针可能指向空值,必须检查其合法性。比如下面代码
#include <iostream> using namespace std; void check1 (int const & r_a) { cout << r_a <<endl; } void check2(int * p_a) { if(p_a) cout << *p_a <<endl; else cout << "null" <<endl; } void main() { int *pc = NULL; // 设置指针为空值 //int& rc = *pc; // 让引用指向空值 错误做法!!!! //cout << rc <<endl; check1(2); //输出 2 check2(pc); //输出null }check1函数不需要检测,check2函数需要检测
3可修改区别
指针可以被重新复制,指向另一个对象。但是引用一旦指向了一个对象,便从此"从一而终”.忠心啊。
#include <iostream> using namespace std; void main() { //准备 int a=3; int b=4; int change=50; int &r_a=a; int * p_b=&b; //引用r_a便从此指向a,但是p_b可以改变。 p_b=&change;//*p_b的值是50.指向了change这个变量。b依然是4 r_a=50;//r_a的值也是50. 它永远指向a,所以a的值为50. cout << *p_b << b << r_a << a;// 50 4 50 50 }
4应用的区别根据是否以后可能修改为空或者不为空情况下选择使用。
相关文章推荐
- C++点滴:向函数中传递指针和传递指针的引用的区别:
- 引用与指针的区别
- 指针与引用的区别
- 引用和指针的主要区别
- 指针和引用的区别
- 指针和引用的区别总结
- 引用与指针的区别(转载)
- 指针与引用的区别
- 指针和引用的区别
- 指针与引用的区别(More Effective C++)
- 引用和指针的使用区别
- 指针与引用的区别(摘自Effective C++)
- C++中引用和指针的两个重要区别
- C++中指针(pointer)和引用(reference)的区别和联系
- 指针与引用的区别
- 指针和引用的区别
- c++中指针,指针的引用,指针的指针的区别
- 指针与引用的区别 (MoreEffictive C++)
- 指针与引用的区别
- 指针与引用的区别