一个关于引用的小问题

yegaofei 2004-04-02 03:10:40
int a[10];
int& *arry=a; //出错!

-----------------------

int a[10];
int *p=a;
int& *arry=p; //编译通过!

第二段代码只是多了一个中间变量p,其实p和a不都是指向同一个单元的指针吗?为什么没有这个中间变量编译就无法通过?
...全文
112 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
yegaofei 2004-04-03
  • 打赏
  • 举报
回复
不好意思啊。我把第二段代码抄错了

应该是

int a[10];
int *p=a;
int* &arry=p; //编译通过!
yegaofei 2004-04-03
  • 打赏
  • 举报
回复
明白了

结帖!!
wangnewton 2004-04-03
  • 打赏
  • 举报
回复
对,钱能《c++程序设计教程》189页有这样两段话:
1)由于指针也是变量,所以可以有指针变量的引用
int *a;
int * &p=a;
int b=8;
p=&b;
2)引用本身不是一种数据类型,所以没有引用的引用,也没有引用的指针
int a;
int& ra=a;
int& *p=&ra; //error企图定义一个引用的指针

大家可以对照参考参考,:(
vcchunhong 2004-04-02
  • 打赏
  • 举报
回复
两个应该都无法编译通过,标准C++不允许定义指向引用的指针。

第二段改为
int a[10];
int *p = a;
int* &arry = p;

第一段改为
int a[10];
int* const &arry = a;

以上使用VC 6.0编译器编译通过


没错的这样改就对了,其实这就是对指针的引用谁说指针不能引用啊只是楼主引用错了
而已,象刚才这位朋友这样改就可以了
yegaofei 2004-04-02
  • 打赏
  • 举报
回复
奇怪了
---------------

回复人: hatecoding(hate coding) ( ) 信誉:100

第一段改为
int a[10];
int* const &arry = a;

以上使用VC 6.0编译器编译通过

----------------------

但是这样写我在dev-cpp里通不过了
hatecoding 2004-04-02
  • 打赏
  • 举报
回复
“……由于指针也是变量,所以可以有指针变量的引用……”
这句话没有错,注意是指针变量的引用,不是指向引用的指针。

dev-cpp没用过,:(
yegaofei 2004-04-02
  • 打赏
  • 举报
回复
钱能 《c++ 程序设计教程》 189页
“……由于指针也是变量,所以可以有指针变量的引用……”

我用的是dev-cpp编译器4.9.8.0版
ck2205 2004-04-02
  • 打赏
  • 举报
回复
不允许对指针建立引用吧!
Jinhao 2004-04-02
  • 打赏
  • 举报
回复
数组名是个const pointer
所以引用就要 reference to const
hatecoding 2004-04-02
  • 打赏
  • 举报
回复
这样你的第一段为什么可以编译通过,也就很容易解释了。
p就是个整数指针。
hatecoding 2004-04-02
  • 打赏
  • 举报
回复
解释:
int a[10];//定义了一个常数组,此时可以认为a十一个常指针,其值不能改变
//也就是说 a = 0xkkk;的操作是不允许的。a指向的内容是可以改变的
//*a = ooo;是允许的。
int* &arry;//定义了一个指向整数指针的引用,注意是整数指针
arry = a;//该操作等同于一个整数指针引用 引用常整数指针(有点拗口),类型不匹配。
//VC6.0对这种不匹配预编译时报错,好像g++不会报错。
结论:
只要定义一个指向常整数指针的引用就ok了


hatecoding 2004-04-02
  • 打赏
  • 举报
回复
两个应该都无法编译通过,标准C++不允许定义指向引用的指针。

第二段改为
int a[10];
int *p = a;
int* &arry = p;

第一段改为
int a[10];
int* const &arry = a;

以上使用VC 6.0编译器编译通过

zzj0616 2004-04-02
  • 打赏
  • 举报
回复
因为引用是对变量而言的,不能直接对a数组操作引用
happlyman 2004-04-02
  • 打赏
  • 举报
回复
学习!
angelo23 2004-04-02
  • 打赏
  • 举报
回复
楼主用的什么编译器?标准是不允许定义指向引用的指针的

65,206

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧