首页 > 其他 > 详细

到底是使用指针还是引用

时间:2015-10-04 11:04:42      阅读:255      评论:0      收藏:0      [点我收藏+]

既然引用可以实现指针的功能,而且更加方便,容易理解,那我们为什么还要使用指针呢,这是因为指针可以为空,而引用不能为空,
指针可以被赋值,但是引用只能被初始化,不可以被赋为另一个对象的别名,如果你想用一个变量记录不同对象的地址,那你就必须使用指针,

 

另外在堆中创造一块内存空间,就必须用指针来访问它,否则该空间就找不到了,当然我们也可以,使用引用来引用指向内存空间的指针

但是我们要明白一点,我们不可以使用引用来直接指向堆中的新建空间,因为引用只是个别名,它不可以作为指针来使用


int *p; int &r = p; 这句话是定义了指针p的别名, 而int &r = *p是定义了一个p指向的空间的别名

/*既然引用可以实现指针的功能,而且更加方便,容易理解,那我们为什么还要使用指针呢,这是因为指针可以为空,而引用不能为空,
指针可以被赋值,但是引用只能被初始化,不可以被赋为另一个对象的别名,如果你想用一个变量记录不同对象的地址,
那你就必须使用指针,另外在堆中创造一块内存空间,就必须用指针来访问它,否则该空间就找不到了,当然我们也可以
使用引用来引用指向内存空间的指针

但是我们要明白一点,我们不可以使用引用来直接指向堆中的新建空间,因为引用只是个别名,它不可以作为指针来使用
int *p; int &r = p; 这句话是定义了指针p的别名, 而int &r = *p是定义了一个p指向的空间的别名*/
#include <iostream>
using namespace std;
int main()
{
    int *p = new int;
    int &r = *p; //这时候我们就可以用r这个别名来修改堆中数据了,r就是堆中p指向的对象的别名
    r = 4;
    cout << *p << endl;
    cout << r << endl;
    return 0;
}

 

到底是使用指针还是引用

原文:http://www.cnblogs.com/rain-1/p/4854205.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!