#include<iostream> using namespace std; int main() { int *p=new int; if(p!=NULL) { int &r=*p; r=3; cout<<r<<endl; } return 0; }
3.2 输出结果
1
3
3.3 说明
假如不为空,将r初始化为指针p的别名,或者指针p指向的数据的别名
int *p=new int;第一行定义了一个指向int的指针p,该指针指向新建的一块内存
if(p!=NULL);第二行测试p,假如不为空,表示空间创建成功
int &r=*p;将r初始化为p指向的内存空间中数据的别名
r=3;然后通过r将3保存在该空间中,接着输出该空间的值
四 总结
指针与引用的区别:
指针可以为空,引用不能为空
指针可以被赋值,引用不能被赋值
指针可以指向堆中空间,引用不可以指向堆中空间
了解了引用和指针的区别,我们就可以有选择的使用指针或者引用了
五 别名和指针混合使用
5.1 代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
#include<iostream> using namespace std; int *func(int &one,int *two,int x); int main() { int num=3; int &mum=num; //定义num的别名mum int *two=# num=3; int x=3; cout<<func(mum,two,x); return 0; } int *func(int &one,int *two,int x) { return two; }