一、基本概念:
1、按值传递:
将一个参数传递给一个函数时,函数接收的是原始值的一个副本。因此,如果函数修改了该参数,仅改变副本,而原始值保持不变。
2、按引用传递:
将一个参数传递给一个函数时,函数接收的是原始值的
内存地址,不是值的副本。因此,如果函数修改了该参数指向的内容,调用代码中的原始值也随之改变。
二、引用与指针区别:
java其实很多东西在内部都是用指针实现,指不过不让大家用而已。
引用就相当于别名。
C++当中引用和指针的差别:
引用的概念:
引用是个别名,当建立引用时,程序用另一个变量或对象(目标)的名字初始化
它。从那时起,引用作为目标的别名而使用,对引用的改动实际上就是对目标的
改动。
引用不是值,不占存储空间,声明引用时,目标的存储状态不会改变。所以,既
然定义的概念有具体分配空间的含义,那么引用只有声明,没有定义。
引用的声明必须初始化。
引用的操作:
C++没有提供访问引用本身地址的方法,因为它与指针或其他变量的地址不同,他
没有任何
意义。引用在建立时就初始化,而且总是作为目标的别名使用,即使在应用
地址
caozuofu.html" target="_blank">操作符时也是如此。
引用一旦初始化,就维系在一定的目标上,再也不分开。任何对该引用的赋值都
是对引用所维系的目标赋值,而不是将引用维系到另一个目标上。
三、java引用与c++引用区别:
c++引用和java的引用很多地方是不一样的,从功能上看,java的引用倒更多的与c++的指针有着相似性(虽然从本质上是不同的),
c++引用的特徵
1,本身的地址就是被引用的变量或对象的地址,本身被维持在一个引用表里
2,没有空引用
3,引用声明是必须初始话
4,一旦声明,该引用就不能指向别的变量或对象,他仅仅是当作别名
但在java中,引用的概念就不一样了
只有第一条是一样的
引用可以为空,赋值null
声明可以不用初始化
声明以后,还可以指向另外的对象
所以说,java的引用在行为上更多的相似于c++的指针,可以这么说,java的引用就是披着引用皮的指针
以上是这几天做项目(c++)的一些领悟
java的钥匙是引用,c++的关键是指针