java引用与C语言指针的区别?最好详细点!
java引用与C语言指针的区别有以下几方面:
1、现象
指针在运行时可以改变其所指向的值,而引用一旦和某个对象绑定后就不再改变,总是指向最初的对象。
2、编译
程序在编译时分别将指针和引用添加到符号表上,符号表上记录的是变量名及变量所对应地址。指针变量在符号表上对应的地址值为指针变量的地址值,而引用在符号表上对应的地址值为引用对象的地址值。符号表生成后就不会再改,因此指针可以改变指向的对象(指针变量中的值可以改),而引用对象不能改。
3、类型
引用其值为地址的数据元素,java封装了的地址,可以转成字符串查看,长度可以不必关心;C指针是一个装地址的变量,长度一般是计算机字长,可以认为是个int。
4、内存占用
所占内存:引用声明时没有实体,不占空间。C指针如果声明后会用到才会赋值,如果用不到不会分配内存。
5、内存溢出
JAVA引用的使用权限比较小,不会产生内存溢出。C指针是容易产生内存溢出的,所以程序员要小心使用,及时回收。
6、本质
JAVA中的引用和C中的指针本质上都是想通过一个别名,找到要操作的目标(变量对象等),方便在程序里操作。所不同的是JAVA的办法更安全,使用更加方便些,但没有了C的灵活,高效。
函数形参引用和指针有什么区别?
数组指针
数组名本身就是一个指针,指向数组的首地址。注意这是声明定长数组时,其数组名指向的数组首地址是常量。而声明数组并使某个指针指向其值指向某个数组的地址(不一定是首地址),指针取值可以改变。
指针数组主要用来指向若干字符串,使字符串的处理更加灵活。同时,我们应该清楚知道,字符串本身就是一个一维数组。对于指针数组应注意以下几点:(1):数组中的元素均为指针类型数据(2):在给数组赋值时,表面看到是比如字符串等,但实际数组元素本身的值并不是字符串,而是字符串的首地址
指针是用来指向某个变量,而引用是给变量取个别名,其作用就如同typedef一样。
用引用作形参时在调用函数里就像操作实参一样,不需要考虑实参的地址问题
用指针做形参时,由于指针的值是变量的地址,所以要通过对地址解引用来操作其所指的变量。
在C++里优先选择引用类型作为形参,因为操作一个变量比操作一个指针要简单的多
但用指针作为形参的好处是它可以通过自增或自减改变它的指向。
温馨提示:建议调用函数时,用引用类型的形参!
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!