java与c++比较 --值与引用的传递

[size=medium][b]一、基本概念:[/b][/size]

[b]1、按值传递:[/b]

将一个参数传递给一个函数时,函数接收的是原始值的一个副本。因此,如果函数修改了该参数,仅改变副本,而原始值保持不变。

[b]2、按引用传递:[/b]

将一个参数传递给一个函数时,函数接收的是原始值的内存地址,不是值的副本。因此,如果函数修改了该参数指向的内容,调用代码中的原始值也随之改变。

[size=medium][b]二、引用与指针区别:[/b][/size]

java其实很多东西在内部都是用指针实现,指不过不让大家用而已。
引用就相当于别名。
C++当中引用和指针的差别:
引用的概念:
引用是个别名,当建立引用时,程序用另一个变量或对象(目标)的名字初始化
它。从那时起,引用作为目标的别名而使用,对引用的改动实际上就是对目标的
改动。
引用不是值,不占存储空间,声明引用时,目标的存储状态不会改变。所以,既
然定义的概念有具体分配空间的含义,那么引用只有声明,没有定义。
引用的声明必须初始化。

引用的操作:
C++没有提供访问引用本身地址的方法,因为它与指针或其他变量的地址不同,他
没有任何意义。引用在建立时就初始化,而且总是作为目标的别名使用,即使在应用
地址操作符时也是如此。
引用一旦初始化,就维系在一定的目标上,再也不分开。任何对该引用的赋值都
是对引用所维系的目标赋值,而不是将引用维系到另一个目标上。

[size=medium][b]三、java引用与c++引用区别:[/b][/size]


c++引用和java的引用很多地方是不一样的,从功能上看,java的引用倒更多的与c++的指针有着相似性(虽然从本质上是不同的),
c++引用的特徵
1,本身的地址就是被引用的变量或对象的地址,本身被维持在一个引用表里
2,没有空引用
3,引用声明是必须初始话
4,一旦声明,该引用就不能指向别的变量或对象,他仅仅是当作别名

但在java中,引用的概念就不一样了
只有第一条是一样的
引用可以为空,赋值null
声明可以不用初始化
声明以后,还可以指向另外的对象
所以说,java的引用在行为上更多的相似于c++的指针,可以这么说,java的引用就是披着引用皮的指针
以上是这几天做项目(c++)的一些领悟
java的钥匙是引用,c++的关键是指针
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值