
C++中 int * & r = new int ;这到底是什么意思?
这是分配动态内容堆吧?就是说,把右边这个堆的单元编号作为变量传给左边。左边是指针变量。问题来了,左边偏偏还带有一个引用。Int*p=newint;这个开辟了两个空间,一个...
这是分配动态内容堆吧?就是说,把右边这个堆的单元编号作为变量传给左边。左边是指针变量。
问题来了,左边偏偏还带有一个引用。
Int * p = new int ; 这个开辟了两个空间,一个是堆,一个是p的空间。
那么int * & r = new int ; 这个呢?也是开辟了两个空间??
其中r的空间是系统分配的静态空间? 展开
问题来了,左边偏偏还带有一个引用。
Int * p = new int ; 这个开辟了两个空间,一个是堆,一个是p的空间。
那么int * & r = new int ; 这个呢?也是开辟了两个空间??
其中r的空间是系统分配的静态空间? 展开
2个回答
展开全部
Int * p = new int ; 这个开辟了两个空间,一个是堆,一个是p的空间,这个是对的.
int * & r = new int ;我的理解是只开辟了一个空间,也就是new 的堆空间,而r只是一个引用,也就是说并没有为r分配内存空间,引用的意思就是取了另外一个名字,但是他们其实是同一个人。
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;
展开全部
干嘛老问这些问题…我觉得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;能使用的操作它也能用,效果也是一样。你能说它们有区别???
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询