引用可以看做是被引用对象的一个别名,在声明引用时,必须同时对其进行初始化。而且不允许再修改成引用其它变量。
指针用于指向变量的地址,可以指向空地址(NULL),且可以再重新指向其它变量的地址。
假设我们把变量都看作是由两部分组成,一个是它的地址,一个是它的值。
我们写个demo看一下原变量的地址和值是多少,再看看引用变量和指针变量的地址和值分别是多少。
int num = 10;
int &a = num;
int *p = #
std::cout<<"num:"<<std::endl
<<"\t"<<"address:"<<&num<<",value:"<<num<<std::endl;
std::cout<<"a:"<<std::endl
<<"\t"<<"address:"<<&a<<",value:"<<a<<std::endl;
std::cout<<"p:"<<std::endl
<<"\t"<<"address"<<&p<<",value:"<<p<<std::endl;
编译,运行,输出结果如下
nulluser:~$ g++ main.cpp -o exe
nulluser:~$ ./exe
num:
address:0x7ffd357f6454,value:10
a:
address:0x7ffd357f6454,value:10
p:
address:0x7ffd357f6458,value:0x7ffd357f6454
由输出可见,num变量的地址是:0x7ffd357f6454,值是:10。
引用a和num变量的地址和值都相同,这就更能理解引用是被引用对象的一个别名,它的组成和原变量是相同的。
而指针变量p是其值等于原变量的地址,也就是p指向了num的地址,指针用于指向变量的地址。
网友评论