地址传递与引用传递有区别呢?区别在何处?

tdcq123 2008-06-26 08:47:42
地址传递与引用传递有区别呢?区别在何处?
地址传递是传变量的地址.而引用传递是为这个变量起个别名.
从定义上是不同的,这个我也知道,可是我反复想,这两种传递虽然不同,但是本质上我找不到什么不同.
就拿引用传递来说吧.它是为实参起个别名.可是它本质上不就是传的地址吗?
所以问问大家,
1.二者本质区别何在?
2.二者可以用一方完全取代对方吗?

...全文
1158 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
gamedragon 2008-06-28
  • 打赏
  • 举报
回复
引用就是一个必须指向有效内存的指针。
刚刚凉 2008-06-28
  • 打赏
  • 举报
回复
引用传递本质上也是地址传递,二者可以互相替代,都是为了解决参数传递中的COPY。但是在函数中如果是引用,直接使用变量名就行了,而如果是指针那么就得加上*()。另外C里面不支持引用。
anzhuge 2008-06-28
  • 打赏
  • 举报
回复
引用不会产生内存拷贝
lishu2002 2008-06-27
  • 打赏
  • 举报
回复

指针可以为空

引用不可以为空,而且被引用的对象必须是存在的
Qt-UI 2008-06-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 anzhuge 的回复:]
void Add(int& iIndex) ----(1)
void Add(int* pIndex) ----(2)

有本质的区别,就是传引用,在内存中不会产生一次拷贝,而传指针,在内存中实际上
是有生成了另一个临时指针,它和pIndex指向的地址是一样的.
[/Quote]

引用会产生一次内存拷贝!!我这样吗??????
anzhuge 2008-06-26
  • 打赏
  • 举报
回复
void Add(int& iIndex) ----(1)
void Add(int* pIndex) ----(2)

有本质的区别,就是传引用,在内存中不会产生一次拷贝,而传指针,在内存中实际上
是有生成了另一个临时指针,它和pIndex指向的地址是一样的.
coordinate 2008-06-26
  • 打赏
  • 举报
回复
没有多大的区别,但传指针有一个好处,可以直接传NULL,而传引用,不管你需不需要都要声明一个变量,再传.另外,就是字符串(不用CString时),指针的作用几乎是不可代替的
Amuro1987218 2008-06-26
  • 打赏
  • 举报
回复
语法上不同,汇编级别上看都是传地址
shenyi0106 2008-06-26
  • 打赏
  • 举报
回复 1
指针可以为空,但是引用不会为空
菜牛 2008-06-26
  • 打赏
  • 举报
回复
没错,本质上是相同的,都是传递地址,也可以相互替代。但是,引用是C++一个相对比较新的特性,是为了克服指针的一些局限性。比如指针的销毁比较不好控制,而用引用就不存在问题。
tuye14 2008-06-26
  • 打赏
  • 举报
回复
通过指针传递还是有一部赋值操作,不信可以试试传递一个指针参数,然后在函数里对指针进行初始化

就明白了
hurry281 2008-06-26
  • 打赏
  • 举报
回复
学习

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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