非高手,勿挠,谢谢合作。。。。引用与指针的地址
在学习引用时,我和我的同学产生了分岐;我觉得引用本身也有地址,书上有这样一句话:“C++没有提供访问引用本身地址的方法,因为它与指针或其他变量的地址不同,它没有任何意义。”(<<C++程序设计教程>> 钱能著)但是我的同学看了同一本书却得出了完全相反的结论,他认为引用本身是没有地址的,引用的地址和被引用的对象的地址是一样的。我们谁也说服不了谁。
这个问题我也问过任课老师,但两个老师也给了我完全相反的答案,把我越搞越糊涂了。
请您给我详细的说一下这个问题,谢谢!
问题点数:20、回复次数:16Top
1 楼steedhorse(晨星)回复于 2003-09-04 19:09:28 得分 6
或许你们都是对的,只是考虑问题的角度不同。
但从使用效果和语法上看,引用一旦初始化后,其语义、语法和被引用对象是没有任何区别的。
至于编译器是怎么做到这一点的,是否用到了指针。我的建议是不要去关心这个问题,因为C++标准并没有对编译器的实现方案做出规定,只要编译器能够正确编译我们的程序,它爱怎么实现就怎么实现。Top
2 楼lth_81(上海男生)回复于 2003-09-04 19:20:49 得分 0
我个人认为:
引用变量本身在初始化的时候是被分配内存空间的,而其存储的内容就是引用对象的地址。其根本就是与指针一模一样。
记得前一阵子论坛里有一篇文章就是讨论指针和引用的区别。Top
3 楼aflyinghorse()回复于 2003-09-04 19:55:05 得分 2
引用被当作被引用对象的别名
去引用的地址就是取对象的地址
引用可以看作常量指针Top
4 楼windyguy()回复于 2003-09-04 20:28:43 得分 3
呵呵,我觉得引用很可能像数组一样,Expert C里面有对数组及指针区别的详细论述。
我认为引用不像指针,更像数组名,引用本身并没有像指针那样的单独空间。
查下语言规范吧,或者做一下实验。使下能否对引用取地址就好了嘛。Top
5 楼Tinybaby(喝蚊子的牛奶)回复于 2003-09-04 20:32:20 得分 3
这个问题在本质上可能是一回事
但由于C++编译器的在安全检查上对两者的处理不同,引起我们产生不同的观点Top
6 楼madasoft(madasoft)回复于 2003-09-04 20:34:43 得分 0
引用到底有没有占用存储空间?写段小小的代码,看汇编吧。
我认为没有。可俺不是高手:(Top
7 楼xueweizhong(薛卫忠)回复于 2003-09-04 21:43:34 得分 6
1)
按照C++STD98:
具体地方我记不清楚了,翻译成中文大致是这样:
<<“标准不规定引用是否占有内存”>>
那么为了符合标准,引用当然是不能取地址的。
2)
但实际使用过程中却给人造成错觉:
/**
*
*/
int a;
int& b = a;
int* address = &b;
这里的address指向的是引用指向的对象a的地址。
所以事实上你没有办法获得引用本身的地址,
3)
当然这个所谓的地址也没有任何用处。
4)
得出的结论是:
“讨论‘引用的地址’就是在讨论一件‘子虚乌有’的事情”。
Top
8 楼glasswing(蜻蜓飞飞)回复于 2003-09-04 23:25:40 得分 0
问题是,如果引用的地址让你通过某种不正当的手段得到了,你准备拿它干什么呢?修改这个地址的内容吗?这样是不合法的,因为引用一旦初始化后就决不改变了 :)Top
9 楼chanet(牧师)回复于 2003-09-04 23:37:21 得分 0
任何变量都有它的存在地址~
引用只不过是作为一个指针变量,指用被引用的变量
Top
10 楼gmaxajtg(星星)回复于 2003-09-08 20:39:49 得分 0
谢谢你们。。。Top
11 楼gmaxajtg(星星)回复于 2003-09-08 20:40:17 得分 0
怎么给分呀。。。Top
12 楼minghui000(沉迷网络游戏)回复于 2003-09-08 21:17:47 得分 0
你想怎么给就怎么给吧。。呵呵Top
13 楼maojincxj(scottpeck)回复于 2003-09-08 23:00:04 得分 0
请看c++ effective,
里边说的很详细,
"非高手,勿挠"这句话比较不爽Top
14 楼windyguy()回复于 2003-09-09 11:07:21 得分 0
楼上的,楼主是说自己非高手,叫大家不要讽刺吧?
难道是说非高手不要进来打扰?呵呵,有比较严重的歧义。Top
15 楼gmaxajtg(星星)回复于 2003-09-11 14:52:01 得分 0
呵呵。。。。
RE:maojincxj(毛巾)
我是来求解的,可不是要知道看什么书。。。。
在GOOGLE里可以找出很多来。这样一来,我就少了不少朋友。。。
RE:minghui000(绿豆冰好好味)
我想给,可是这个论坛他不听我的话呀。。。。Top
16 楼gmaxajtg(星星)回复于 2003-09-13 00:23:27 得分 0
RE:windyguy()
是呀。。说得对!!!
如果我是高手。。。。
就不会问这问题了。Top
17 楼lyr311(老刘:别总在CSDN上逛!!!)回复于 2003-12-16 22:11:43 得分 0
Mark!Top




