C++中 int * & r = new int ;这到底是什么意思?

这是分配动态内容堆吧?就是说,把右边这个堆的单元编号作为变量传给左边。左边是指针变量。问题来了,左边偏偏还带有一个引用。Int*p=newint;这个开辟了两个空间,一个... 这是分配动态内容堆吧?就是说,把右边这个堆的单元编号作为变量传给左边。左边是指针变量。

问题来了,左边偏偏还带有一个引用。

Int * p = new int ; 这个开辟了两个空间,一个是堆,一个是p的空间。

那么int * & r = new int ; 这个呢?也是开辟了两个空间??

其中r的空间是系统分配的静态空间?
展开
 我来答
黑色星期天HOHO
2013-06-02 · 超过16用户采纳过TA的回答
知道答主
回答量:40
采纳率:100%
帮助的人:42.5万
展开全部
Int * p = new int ; 这个开辟了两个空间,一个是堆,一个是p的空间,这个是对的.
int * & r = new int ;我的理解是只开辟了一个空间,也就是new 的堆空间,而r只是一个引用,也就是说并没有为r分配内存空间,引用的意思就是取了另外一个名字,但是他们其实是同一个人。
追问
我知道,所谓的引用,就是以别人的地址为自己别名的地址。那么r地址是别人的地址,究竟是谁的地址呢?

你说这个地址就是堆的地址?这个r就是堆空间的名称?但是这个等式,只不过是将右边一个地址变量赋值给左边而已啊。哪里来的引用呢?

引用不是这样的吗: int &b = a; 右边是名,左边是别名

那以上int * & r = new int是什么?他右边不过是个地址变量,是个具体的数据啊,也没有名称
追答
引用不是这样的吗: int &b = a; 右边是名,左边是别名——你理解太局限了,右边不一定非得是名。int * & r = new int;
等价于int * p = new int;int * &r = p;
ok洛阳水席
2013-06-02 · TA获得超过1839个赞
知道小有建树答主
回答量:580
采纳率:50%
帮助的人:587万
展开全部

干嘛老问这些问题…我觉得int *& r = new int;和 int * r = new int是完全等价的……

#include<iostream>
using namespace std;

int main()
{
int *&r = new int;
*r = 1;
cout<<r<<endl<<*r<<endl;
int &b=*r;
b = 3;
cout<<r<<endl<<*r<<endl;
int a=2;
r=&a;
cout<<r<<endl<<*r<<endl<<b<<endl;

int *n = new int;
*n = 1;
cout<<n<<endl<<*n<<endl;
int &c=*n;
c = 3;
cout<<n<<endl<<*n<<endl;
int d=2;
n=&d;
cout<<n<<endl<<*n<<endl<<c<<endl;
return 0;
}

怎么找都找不出区别!!!!!!!int *&r = new int;不等于int * const r=new int;

追问
int *& r = new int;和 int * r = new int是完全等价的???不会吧大哥。我问的问题就是来自范磊C++
追答
事实上确实没区别,
你能找出不同来么???
int * & r = new int ;开辟了两个空间!!!我写的那个程序你也看到了r=&a;完全没问题,对于int * & r = new int 来说所有int *n = new int;能使用的操作它也能用,效果也是一样。你能说它们有区别???
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式