社区
C++ 语言
帖子详情
引用与指针的区别
richard_ma
2006-10-20 07:22:23
在向函数传递参数和参数返回值中,引用和指针有什么区别?
在向函数传递参数和参数返回值中,在用法上有什么不同?
在向函数传递参数和参数返回值中,二者的含义有什么不同?
谢谢
...全文
810
26
打赏
收藏
引用与指针的区别
在向函数传递参数和参数返回值中,引用和指针有什么区别? 在向函数传递参数和参数返回值中,在用法上有什么不同? 在向函数传递参数和参数返回值中,二者的含义有什么不同? 谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
26 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
KenYuan2016
2006-10-24
打赏
举报
回复
引用和指针:
1。引用在定义的时候必须初始化。指针不必。
2。没有指向空的应用。指针可以。
3。引用不能改变。指针可以。
做为函数参数传递时:
我们来实现一下 string operator +
A。对象本身实现 operator+(string a, string b);
B。指针实现 operator+(string *a, string *b);
C。引用实现 operator+(const string &a, const string &b);
区别:
A:对象传递,函数体内实现的时候,必须为a,b分配空间,调用a,b的拷贝构造函数。开销大,速度慢。
B:我们速度上去了,但是直观性却很差,string c, d;我们实现的时候怎么写? &c+&d, 很怪是吧。而且在operator+实现体里面我们必须对c,d做判断。
C:上面A,B中所有的缺点都消失了吧。 :-)
补充:引用和const指针很多地方很像,但是我们还是要区分开,const指针到底是修饰的是谁,
比如: const *p const p * :-)
gaohanj
2006-10-24
打赏
举报
回复
非常赞同四楼的说法,up
qxbnit
2006-10-24
打赏
举报
回复
这点其实可以向JAVA学习,,,
搞得太复杂了
seraphimpk
2006-10-24
打赏
举报
回复
mark,学习了
cubety
2006-10-24
打赏
举报
回复
mark
Macor
2006-10-24
打赏
举报
回复
up
celeil
2006-10-24
打赏
举报
回复
记得南大考研曾经考过这题,他的答案主要集中在,第一,引用的初始化,第二,不可以更改被引用的变量。
由于在很多实现里,常常会用指针实现引用,故而除此两点外,南大的教材及考题没有特别强调二者的不同。
Kusk
2006-10-23
打赏
举报
回复
嗯,顺便说一句。一般编译器实现引用的时候,尤其是参数传递时,实际上底层还是转化成转指针
来实现的。只不过在必要的时候编译器会自动帮你解引用,所以对程序员来说是方便了许多。
IP_V6
2006-10-23
打赏
举报
回复
路过~~
四楼的经典
mekiss
2006-10-23
打赏
举报
回复
学习下
IMGGTOO
2006-10-22
打赏
举报
回复
受教育了!
今天太晚了,没看完.先做个记号,明天来再接着看!
jwqu
2006-10-22
打赏
举报
回复
maek 下.........明天再看
csucj
2006-10-21
打赏
举报
回复
引用和指针三大区别:
1.引用必须初始化,指针不必.
2.引用初始化后不能被改变,指针可以改变所指的变量.
3.不存在指向空值的引用,但是存在指向空值的指针.
justrun2005
2006-10-20
打赏
举报
回复
引用,在概念定义上是有很大不同的,但是正如必知必会上讲的,有很多编译器是用指针实现引用的。
iambic
2006-10-20
打赏
举报
回复
形式区别,概念区别。本质上差不多。
doudouHuY
2006-10-20
打赏
举报
回复
使用指针作为行参,需要在堆栈中为其分配空间,使用引用作为行参,不需要。
实际上,俺在vc下汇编代码中看到还是在栈中占空间
楼下继续
doudouHuY
2006-10-20
打赏
举报
回复
二楼说引用是别名,那也就是说引用和原来的变量是同一个了,那么函数返回引用是不能用的了?函数在运行完后,在函数内定义的变量就不存在了,也就没有别名了?我这么说对吗?
====
int& fn()
{
int a = 3;
return a;
}
a是自动变量,返回得是int引用,你能说没用吗?
实际上和返回值一样,会产生临时变量,看看汇编码就知道,是将自动变量a保存到eax中,然后函数返回,相关寄存器出栈,此时自动变量a不存在了。
之后,如果你用b = fn();会将eax的内容赋值给b。
注意:不要返回自动变量的指针,因为此后通过此指针访问的东西不可预料。
飞哥
2006-10-20
打赏
举报
回复
有共同点~
当然差别很大了
~~~~~~~~·
本质是不同的,首先一个就是没有分配空间的,尽管它和const都是在定义时就要初始化
而且不可以改变指向,一个是给人家起个外号,一个是却有其物
~~~~~~~~·
闪人~
richard_ma
2006-10-20
打赏
举报
回复
听大家说,我觉得引用是const版的指针,可以这么理解吗?
飞哥
2006-10-20
打赏
举报
回复
在向函数传递参数和参数返回值中,引用和指针有什么区别?
===============================
A:这里传递指针和引用都能达到相同的效果
◎就是不必进行值拷贝传递参数
◎能够在函数返回后保持函数内修改后的状态
◎指针是分配空间的,引用不分配空间
◎指针可以指向不同对象,也可以指空,但是引用只能在声明的时候初始化指向一个对象,并且不能修改了
◎这个其实也是差不多的,通返回“值”相比,提高了效率
避免临时对象的返回,因为在函数退出后,临时对象被释放,应用也就没有意义了
谢谢
加载更多回复(6)
免费下载:C语言难点分析整理.doc
44.
指针
与数组学习笔记 222 45. 数组不是
指针
224 46. 标准C中字符串分割的方法 228 47. 汉诺塔源码 231 48. 洗牌算法 234 49. 深入理解C语言
指针
的奥秘 236 50. 游戏外挂的编写原理 254 51. 程序实例分析-为什么会...
C语言系列课程
多维数据定义、初始化、
引用
第16讲 函数(一) 函数定义、函数调用、函数返回值、函数声明 第17讲 函数(二) 函数参数传递方式 第18讲
指针
与变量关系 变量、
指针
第19讲
指针
与数组关系 数组
指针
、数组
指针
引用
...
c++
引用
与
指针
的
区别
1.
指针
是存储某个实例的地址,
引用
是实例的别名 2.程序为
指针
分配内存区域,而不为
引用
分配内存区域 3.
指针
使用时要加 “ * ”,解
引用
,
引用
可以直接使用 例: int main() { int a = 10; int& b = a; ...
指针
和
引用
的
区别
一、
指针
和
引用
的定义和性质
区别
(1)
指针
:
指针
是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元,即
指针
是一个实体;而
引用
跟原来的变量实质上是一个东西,只不过是原变量的一个别名而已。如...
C++ 语言
64,642
社区成员
250,592
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章