关于C++编程 引用的一个问题

来源:百度知道 编辑:UC知道 时间:2024/05/20 19:29:21
请教高手个问题,引用堆中变量,为什么要在指针前要加*号
int * p=new int;
//......
int & a=*p;
而不是直接写成
int & a=p;
不明白 *p是指向的是地址里面存的值才对啊
为什么 int & a=*p; 能指向p分配到的堆空间

*p是指向的是地址里面存的值
可以这样写:int* a = p;
也可以这样写:int a = *p;
但后者只能定义a的值为p地址里的值,当a值发生变化时,*p不会变化,而int &a = *p;则可以定义a为*p的引用,即当a值发生变化时,*p也跟着发生了变化。
以前常用的写法是:int* a = p; *a = ...;
而有了引用之后,写法就更简洁了:int& a = *p; a = ...