可以创建任何类型的引用,包括指针类型。
看一个简单的指针的引用的例子。例如:
#include <iostream> using namespace std; int main(){ int x=10; int y=20; int z=30; int* ptx=&x; int* ptz=&z; //指针的引用,声明从右往左看,rtp与&结合, //剩余的符号和左边结合 //引用一旦创建,不能改变其指向,只能改变其值 int* &rtp=ptx; cout<<"&x="<<&x<<endl; cout<<"&ptx="<<&ptx<<" "<<"&rtp="<<rtp<<endl; cout<<"ptx="<<ptx<<" "<<"rtp="<<rtp<<endl; cout<<"*ptx="<<*ptx<<" "<<"*rtp="<<*rtp<<endl<<endl; ptx=&y; //ptx的值改变了,rtp的值也相对改变了 //但其指向不变 cout<<"&y="<<&y<<endl; cout<<"&ptx="<<ptx<<" "<<"&rtp="<<rtp<<endl; cout<<"ptx="<<ptx<<" "<<"rtp="<<rtp<<endl; cout<<"*ptx="<<*ptx<<" "<<"*rtp="<<*rtp<<endl<<endl; rtp=ptz; //rtp的值改变了,ptx的值也相对改变了 //但rtp指向不变 cout<<"&ptz="<<&ptz<<endl; cout<<"&ptx="<<ptx<<" "<<"&rtp="<<rtp<<endl; cout<<"ptx="<<ptx<<" "<<"rtp="<<rtp<<endl; cout<<"*ptx="<<*ptx<<" "<<"*rtp="<<*rtp<<endl<<endl; }
输出结果:
这样看不明显,我们来简化一下例子,并通过调试来查看其变量地址以及值。
#include <iostream> using namespace std; int main(){ int x=10; int y=20; int z=30; int* ptx=&x; int* ptz=&z; //指针的引用,声明从右往左看,rtp与&结合, //剩余的符号和左边结合 //引用一旦创建,不能改变其指向,只能改变其值 int* &rtp=ptx; ptx=&y; //ptx的值改变了,rtp的值也相对改变了 //但其指向不变 rtp=ptz; //rtp的值改变了,ptx的值也相对改变了 //但rtp指向不变 }
单步运行截图:(看ptx和rtp的值)
可以看到,rtp一直指向0x22fed8,而这个地址,正是&ptx的地址,从这里可以看出,引用一旦创建其指向不可改变,能改变的只是其值(ptx的值)!
这就是指针的引用,指向引用的指针请看下一篇博文!
——————————————————————————————————————————————————
//写的错误或者不好的地方请多多指导,可以在下面留言或者给我发邮件,指出我的错误以及不足,以便我修改,更好的分享给大家,谢谢。
转载请注明出处:https://www.royalchen.com/
author:royalchen
Email:royalchen@royalchen.com
———————————————————————————————————————————————————