c++高手help,书上说“引用”的限制到底正不正确?怎么运行成功了(菜鸟在线)

来源:百度知道 编辑:UC知道 时间:2024/05/27 08:41:37
书上讲“引用”的限制时,说:

不能建立对引用的引用或指向引用的指针(因为引用本身不是一种数据类型)
不过,可以建立对指针的引用。

可是我运行时却都以啊,到底是怎么回事?

#include "stdafx.h"
#include "iostream"
using namespace std;
void main()
{
int i=2;
int &j=i,&k=j;//......k不就是引用的引用?
int *p=&j;//......p不就是引用的指针?
cout<<k<<endl;
cout<<*p<<endl;

}

其实是概念理解的问题,你定义指针的指针时,用的几个*?一个&怎么是引用的引用,int *p=&j;&j返回的根本不是j的地址而是i的地址,怎么是引用的指针呢.就是因为引用不是一个数据类型

据 effective c++ 第三版 中文版(侯捷译)的 条款20 所言:“如果窥视C++编译器底层,你会发现, references(引用) 往往以指针实现出来”。

cout << &k << endl; 输出的是个内存地址,相当于指针。
&k 本身就是取 k 的地址的意思。

int &j = i 的意思似乎是在 j 的内存地址上开辟一个地方存上 i;

具体等下楼的高手解答。

果然如楼上所言,&j返回的地址是 i 的地址。